【问题标题】:Sql Server 2008 not ignoring a noise word in a fulltext phrasal query?Sql Server 2008 没有忽略全文短语查询中的干扰词?
【发布时间】:2011-10-15 12:52:55
【问题描述】:

假设我们有一个带有全文字段的表格。该字段称为text。表格的内容是:

car wash
car and wash

and这个词在我的stoplist

现在,我将使用这个 sql 查询这个表:

select * from mytable
where contains(text, '"car wash"')

此查询仅返回 car wash 行,而不返回 car and wash 行。通过假设单词and 是停用词,为什么Sql 不返回car and wash 行?

我知道我正在进行短语搜索(使用“”)。这正是我所需要的,但我认为 Sql 应该忽略停止列表中的单词,这不是正在发生的事情。快把我逼疯了。

我的理解是,当 FT 算法找到像 car and wash 这样的短语时,它只会索引 carwash。这是真的吗?

此外,当我查询 ft_parser 时,它说出了我的预期:

SELECT * FROM sys.dm_fts_parser ('"car and wash"', 1033, 5, 0)

    special_term    display_term    
    Exact Match         car 
    Noise Word          and 
    Exact Match         wash    

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    看这篇文章: stopwords

    虽然 fts 忽略了停用词的包含,但全文索引确实考虑了它们的位置

    fts忽略“and”字后,“car”和“wash”的位置会是1和3,所以找不到了。

    我建议改用另一个术语。也许您想使用诸如“洗车”之类的词或其他术语。这取决于业务逻辑

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多