sql - 在 SQL Server 2016 中使用全文搜索在短语中搜索部分单词
问题描述
在 Microsoft SQL Server 中,当我们使用全文搜索来搜索值时,我们的搜索仅限于起始词。也就是说,我们不能LIKE
在中间搜索包含看起来像运算符的单词。
我尝试执行此查询,但结果不是我的意见。
我想搜索这个词的中间部分。例如,如果我的术语是“Microsoft”并且我的查询是:
SELECT *
FROM dbo.SMS_Outbox
WHERE CONTAINS(MessageText, N'"*soft*"')
没有返回结果!
解决方案
文档非常清楚,通配符只允许在搜索词的末尾:
CONTAINS 谓词支持使用星号 (*) 作为通配符来表示单词和短语。您只能在单词或短语的末尾添加星号。星号的存在启用前缀匹配模式。在此模式下,如果列包含指定的搜索词后跟零个或多个其他字符,则返回匹配项。
你不能轻易地做你想做的事。一个简单的选择是切换到LIKE
性能并受到影响:
WHERE MessageText LIKE N'%soft%'
另一种选择可能soft
是以始终位于搜索词开头的方式解析您的文本。
推荐阅读
- email - 使用 OAuth2 不记名令牌获取 Google 电子邮件地址,无需弃用 Google+ API
- python - 有没有办法查看 Pytorch 中的培训课程出了什么问题?
- php - 避免对多对多对象关系的循环引用
- java - JavaFX:切换场景时列表清除值
- javascript - 如何计算总数?
- php - 我正在制作一个 PHP 测验应用程序。我如何确保这些问题只被问到一次?
- json - 通过 JSON Schema 显示树结构层次结构
- javascript - (Symfony 4) FOS Js Routing Bundle - 路由 -------- 不存在。
- python - 带有二元和连续自变量的 statsmodels 的 logit
- python - 每次使用 pandas 和 python 处理多个文件时,从 txt 文件中读取单个变量