我在 SQL Server 2008 中有一个带有全文搜索索引的数据库。我在停止列表中定义了停用词“al”。但是,当我使用关键字“al”搜索任何词组时,“al”一词仍会出现在排名中。
这可能与我正在分解搜索词并重建它们的事实有关。然后我在多个字段中搜索并对结果进行排名:http://pastebin.com/fdce11ff .此功能用于分解搜索
'al hamra'
进入
("*al*" ~ "*hamra*") OR ("*al*" OR "*hamra*")
用于全文搜索。
想象一下这个场景:
姓名:
Al Hamra,作者:Jack Brown,类型:小说
Al Karawan,作者:Al Hanz,类型:浪漫
现在搜索 'al hamra' 将返回 'Al Karawan',尽管 'al' 在停止列表中。为什么是这样?我认为停止列表会导致单词失去权重?
最佳答案
干扰词特定于代码页;你把它加到正确的了吗?您可以使用 sys.dm_fts_parser测试它(在下面)这也可能比您在代码中(或不)手动分词更好。
SELECT special_term, display_term
FROM sys.dm_fts_parser
(' "al hamra" ', 1033, 0, 0)
假设您使用的是代码页 1033。如果您的干扰词在您期望的代码页中,那么它应该在列表中作为干扰词可见。
关于sql-server - 全文搜索 : Noise words are being searched for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1875237/