0

私はこのクエリを持っています:

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

これは、用語が順番に表示される David Smith と一致します。

同じクエリで david OR dave smith をチェックできるかどうか疑問に思っています。CONTAINS と NEAR のドキュメントは少しわかりにくいです。主に「OR」を追加しようとしましたが、サイコロは追加しませんでした。

出来ますか?

(編集:明らかに、両方の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 シソーラス ファイル (言語ごとに 1 つずつあります) のエントリは次のようになります。

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

SQL Server 2012 のシソーラス ファイルの詳細については、こちらを参照してください。

于 2014-08-28T12:25:43.460 に答える