0

我有这个查询:

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

这与术语按顺序出现的大卫史密斯相匹配。

我想知道是否可以在同一个查询中检查 david 或 dave smith。CONTAINS 和 NEAR 的文档有点混乱。我尝试了一些尝试,主要是尝试添加“或”,但没有骰子。

可能吗?

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

4

2 回答 2

1

在全文搜索中使用 OR 运算符。

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

于 2013-06-11T13:06:21.110 回答
0

您还可以使用全文搜索词库来指示“David”和“Dave”是同义词,因此不需要 OR 子句。词库允许您声明替换术语和扩展术语。对于您的情况,您将使用扩展术语。XML 同义词库文件中的条目(每种语言有一个)如下所示:

<expansion>
    <sub>David</sub>
    <sub>Dave</sub>
</expansion> 

有关 SQL Server 2012 中同义词库文件的详细信息,请参阅此处

于 2014-08-28T12:25:43.460 回答