sql-server - 使用 SQL Server 全文搜索以特定顺序匹配词的屈折形式
问题描述
我想使用SQL Server 全文搜索来查找以特定顺序出现的词的屈折形式。所以单词method
andapparatus
会匹配These are the methods I'm using with the apparatuses
但不匹配This apparatus is used with these methods
。
有没有办法做到这一点?看起来很简单,但我什么也没找到。
我试过CONTAINS
:
'NEAR((method,apparatus), MAX, TRUE) AND FORMSOF(INFLECTIONAL,method) AND FORMSOF(INFLECTIONAL,apparatus)'
'FORMSOF(INFLECTIONAL,NEAR((method,apparatus), MAX, TRUE))'
'NEAR((FORMSOF(INFLECTIONAL,method),FORMSOF(INFLECTIONAL,apparatus)), MAX, TRUE)'
解决方案
问题是你不能结合FORMSOF
(NEAR
这里是参考)。一种可能的方法(尽管效率不高)是尝试“方法”和“设备”的所有不同替代方案(如果您没有其他词要搜索),如下所示:
SELECT some_id
FROM some_table
WHERE CONTAINS(some_text, 'NEAR((method,apparatus), MAX, TRUE) OR NEAR((method,apparatuses), MAX, TRUE) OR NEAR((methods,apparatus), MAX, TRUE) OR NEAR((methods,apparatuses), MAX, TRUE)')
另一种选择是使用CHARINDEX
(这也可能是低效的),如下所示:
SELECT some_id
FROM some_table
WHERE CONTAINS(some_text, 'FORMSOF(INFLECTIONAL,method) AND FORMSOF(INFLECTIONAL,apparatus)')
AND CHARINDEX('method', some_text) < CHARINDEX('apparatus', some_text)
他们都和我一起工作得很好。希望这可以帮助。
推荐阅读
- javascript - 我们可以在 Javascript 中离线使用 GoJS 库吗?
- sql - 如何在没有日期的字段中显示“无开始日期”使用 DATEDIFF 和 GETDATE 计算年份
- javascript - 如何将带有 Node 后端的 Svelte 前端部署到 Heroku?
- tableau-api - 包含多个日期计算的 Tableau 表
- javascript - 使用javascript从脚本中提取文本
- html - 当我将鼠标悬停在按钮上时,我的下拉菜单消失了
- c# - 无法从 EC2 实例元数据服务获取 IAM 安全凭证 - .netcore AWS SDK
- c# - C#格子Webhook如何解码
- r - 在 Shiny 中使用 for 循环生成和显示动态 UI
- ios - iOS 14、mobileconfig、DNS over HTTPS,支持 DNSDomainMatch 白名单