2

假设我们有一个带有全文字段的表格。该字段称为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    

有什么想法吗?

4

1 回答 1

0

看这篇文章: 停用词

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

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

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

于 2011-07-29T10:54:13.297 回答