2017-04-17 62 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 –