gpt4 book ai didi

sql-server - 全文搜索中的 CONTAINS 不会返回所有结果

转载 作者:行者123 更新时间:2023-12-03 02:47:59 24 4
gpt4 key购买 nike

我在 SQL Server 2008 中使用全文搜索。以下查询

select * From MyTable where contains( *, 'FLOW AND VALVE')

返回两行:

1. FLOW CONTROL VALVE
2. FLOW VALVE

但以下查询

select * From MyTable where contains( *, '"FLOW AND VALVE"'))

仅返回一行:

1. FLOW CONTROL VALVE

为什么第二个查询不返回第二行?

最佳答案

如果您使用的是 SQL Server 2008,您可以通过运行获得一些线索

SELECT * 
FROM sys.dm_fts_parser('FLOW AND VALVE',1033,0,0)

SELECT *
FROM sys.dm_fts_parser('"FLOW AND VALVE"',1033,0,0)

CONTAINS( *, 'FLOW AND VALVE')被解释为两个 <simple_term>搜索与 bool 条件结合在一起。即CONTAINS( *, 'FLOW') AND CONTAINS( *, 'VALVE')

CONTAINS( *, '"FLOW AND VALVE"'))被解释为短语搜索,其中“And”被视为干扰词而被忽略。

至于为什么第二个匹配“FLOW CONTROL VALVE”而不匹配“FLOW VALVE”From this article

Although it ignores the inclusion of stopwords, the full-text index does take into account their position.

所以本质上停用词的存在充当通配符词匹配。

关于sql-server - 全文搜索中的 CONTAINS 不会返回所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com