4

我在 SQL Server 2008 中有一个带有全文搜索索引的数据库。我在 Stoplist 中定义了 Stopword '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'在停止列表中。为什么是这样?我认为停止列表会导致单词失去重量?

4

1 回答 1

1

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

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

假设您使用的是代码页 1033。如果您的干扰词在您期望的代码页中,那么它应该在列表中作为干扰词可见。

于 2009-12-09T18:37:04.603 回答