全文搜索:正在搜索噪音词

时间:2009-12-09 16:53:36

标签: sql-server full-text-search stop-words

我在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'是在停止名单。为什么是这样?我以为候选名单会导致言语失去其重量?

1 个答案:

答案 0 :(得分:1)

噪音词特定于代码页;你把它添加到了正确的吗?您可以使用sys.dm_fts_parser对其进行测试(如下所示),这也可能比您在代码中的手动断言更好(或不是)。

SELECT special_term, display_term
FROM sys.dm_fts_parser
  (' "al hamra" ', 1033, 0, 0)

假设您正在使用代码页1033.如果您的代码页中有干扰词,那么它应该在列表中显示为干扰词。