sql-server - 全文搜索 : Noise words are being searched for

标签 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' 在停止列表中。为什么是这样?我认为停止列表会导致单词失去权重?

最佳答案

干扰词特定于代码页;你把它加到正确的了吗?您可以使用 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/

相关文章:

php - 使用 * 和 % 的匹配语句均不返回精确结果

MySQL 对包含特殊字符的列进行全文搜索

sql-server - SQL 中的 IF 条件表达式评估

c# - SQL Server 对象资源管理器密码可见

sql-server - 如何为不同的数据库多次运行 NUnit onetimesetup

sql-server - 列出包含列的所有索引(猴子)

python - 编写帖子搜索算法

python - 下面的python代码有什么错误

java - 如何在 Lucene 4.4 中自定义停用词列表

java - java中的停止 token 过滤器以使用您想要的停止词