【发布时间】:2020-01-17 19:58:50
【问题描述】:
基本上运行如下:
SELECT *
FROM document
WHERE contains(cachedText, 'after')
返回 0 条记录,与任何包含单词 after 的搜索词相同。
正在搜索:
SELECT *
FROM document
WHERE cachedText like '%after%'
在我的数据集中返回大约 200k 条记录。只是想知道这是否有任何原因?
【问题讨论】:
-
这可能与 CONTAINS 中的第二个参数是 nvarchar 的事实有关?
-
CONTAINS是 SQL Server 中的全文搜索,它还定义了搜索时不考虑的 停用词 的列表 - 而且很有可能“之后”被认为是这些停用词之一,因此不会被发现。另请查看:stackoverflow.com/questions/8435602/… -
这两个查询完全不同。第一个是全文搜索查询,第二个是简单的模式匹配。如果
cachedText不是 FTS 索引的一部分,第一个甚至可能不会运行。
标签: sql-server tsql