我在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'是在停止名单。为什么是这样?我以为候选名单会导致言语失去其重量?
答案 0 :(得分:1)
噪音词特定于代码页;你把它添加到了正确的吗?您可以使用sys.dm_fts_parser对其进行测试(如下所示),这也可能比您在代码中的手动断言更好(或不是)。
SELECT special_term, display_term
FROM sys.dm_fts_parser
(' "al hamra" ', 1033, 0, 0)
假设您正在使用代码页1033.如果您的代码页中有干扰词,那么它应该在列表中显示为干扰词。