2017-04-17 97 views
0

我們的表中有一列用於全文搜索的索引。在這裏面我們存儲的值,如SQL Server FTS返回的結果不準確

<zNSIC>1010</zNSIC> 

在標籤內的值可以是任何東西,於是我們創建一個類似搜索查詢...

SELECT KEY 
FROM CONTAINSTABLE(SearchTable, SearchText, '("<zNSIC>15*")') 

,它應該返回任何記錄,其中SearchText列有zNSIC標籤,其值爲1500,1501,1502等。這是行得通的,但是我也找回了一些記錄,其中沒有zNSIC標籤,以15開始。我可以在兩個中找到最接近的匹配記錄是

<zNSIC>DM15</zNSIC> 

我不明白爲什麼它在考慮DM作爲匹配值。有任何想法嗎?這是SQL服務器2014年

回答

1

的「15」被解析出來作爲一個單獨的短語可以在這裏看到:

select keyword, special_term, display_term, source_term 
    from sys.dm_fts_parser('("<zNSIC>15*")', 1033, 0, 0); 

keyword     special_term display_term source_term 
0x007A006E007300690063 Exact Match  znsic   <zNSIC>15 
0x00310035    Exact Match  15    <zNSIC>15 
0x006E006E00310035  Exact Match  nn15   <zNSIC>15 
+0

好了,所以我假設它的使用>的分詞?有沒有辦法忽略它? –

+0

@geoffswartz這可能會有所幫助:https://docs.microsoft.com/en-us/sql/relational-databases/search/configure-and-manage-word-breakers-and-stemmers-for-search –