我有这个查询:
select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE)')
这与术语按顺序出现的大卫史密斯相匹配。
我想知道是否可以在同一个查询中检查 david 或 dave smith。CONTAINS 和 NEAR 的文档有点混乱。我尝试了一些尝试,主要是尝试添加“或”,但没有骰子。
可能吗?
(编辑:显然,我的意思是在一个单独的 CONTAINS 中,而不是链接两个 CONTAINS)
我有这个查询:
select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE)')
这与术语按顺序出现的大卫史密斯相匹配。
我想知道是否可以在同一个查询中检查 david 或 dave smith。CONTAINS 和 NEAR 的文档有点混乱。我尝试了一些尝试,主要是尝试添加“或”,但没有骰子。
可能吗?
(编辑:显然,我的意思是在一个单独的 CONTAINS 中,而不是链接两个 CONTAINS)
在全文搜索中使用 OR 运算符。
select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE) OR NEAR((dave, smith), MAX, TRUE)')
您还可以使用全文搜索词库来指示“David”和“Dave”是同义词,因此不需要 OR 子句。词库允许您声明替换术语和扩展术语。对于您的情况,您将使用扩展术语。XML 同义词库文件中的条目(每种语言有一个)如下所示:
<expansion>
<sub>David</sub>
<sub>Dave</sub>
</expansion>
有关 SQL Server 2012 中同义词库文件的详细信息,请参阅此处。