SQL Server 2012全文搜索,您可以使用NEAR来匹配'dave或david smith'吗?

时间:2013-06-11 12:54:25

标签: sql-server sql-server-2012 full-text-search

我有这个问题:

select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE)')

哪个匹配大卫史密斯的条款顺序出现。

我想知道是否可以在同一个查询中检查david或者dave smith。 CONTAINS和NEAR的文档有点令人困惑。我玩了几次尝试,主要是尝试添加'OR',但没有骰子。

有可能吗?

(编辑:显然,我的意思是在单个CONTAINS中而不是链接两个CONTAINS)

2 个答案:

答案 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