首页 > 解决方案 > 在 SQL Server 2016 中使用全文搜索在短语中搜索部分单词

问题描述

在 Microsoft SQL Server 中,当我们使用全文搜索来搜索值时,我们的搜索仅限于起始词。也就是说,我们不能LIKE在中间搜索包含看起来像运算符的单词。

我尝试执行此查询,但结果不是我的意见。

我想搜索这个词的中间部分。例如,如果我的术语是“Microsoft”并且我的查询是:

SELECT * 
FROM dbo.SMS_Outbox 
WHERE CONTAINS(MessageText, N'"*soft*"')  

没有返回结果!

标签: sqlsql-serverfull-text-search

解决方案


文档非常清楚,通配符只允许在搜索词的末尾:

CONTAINS 谓词支持使用星号 (*) 作为通配符来表示单词和短语。您只能在单词或短语的末尾添加星号。星号的存在启用前缀匹配模式。在此模式下,如果列包含指定的搜索词后跟零个或多个其他字符,则返回匹配项。

你不能轻易地做你想做的事。一个简单的选择是切换到LIKE性能并受到影响:

WHERE MessageText LIKE N'%soft%'

另一种选择可能soft是以始终位于搜索词开头的方式解析您的文本。


推荐阅读