我有这个问题:
select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE)')
哪个匹配大卫史密斯的条款顺序出现。
我想知道是否可以在同一个查询中检查david或者dave smith。 CONTAINS和NEAR的文档有点令人困惑。我玩了几次尝试,主要是尝试添加'OR',但没有骰子。
有可能吗?
(编辑:显然,我的意思是在单个CONTAINS中而不是链接两个CONTAINS)
答案 0 :(得分:1)
在全文搜索中使用OR运算符。
select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE) OR NEAR((dave, smith), MAX, TRUE)')
答案 1 :(得分:0)
您还可以使用全文搜索词库来表明" David"和#34;戴夫"是同义词,因此不需要OR子句。同义词允许您声明替换术语和扩展术语。对于您的情况,您将使用扩展术语。 XML同义词库文件中的条目(每种语言有一个)如下所示:
<expansion>
<sub>David</sub>
<sub>Dave</sub>
</expansion>
有关SQL Server 2012中同义词库文件的详细信息,请参阅here。