投稿のタイトルが悪くて申し訳ありませんが、これをうまく要約できませんでした。
例を使用することをお勧めします。2 つのテキスト列を持つこの単純なテーブルがあるとします (他の列は除外しています)。
Id Text_1 Text_2
1 a a b
2 c a b
「b」ではなく「a」を検索したい場合、現在の実装ではレコード 1 が返されます。検索条件が列「Text_1」で一致しているのに対し、レコード 2 ではどの列でも一致していないためです。
ただし、ほとんどの場合、エンド ユーザーはレコード 1 も除外することを意味するため、これは直感的ではない可能性があります。
したがって、私の質問は、SQL Server に「すべての列にわたって」一致を行うように指示したい場合 (つまり、「NOT」部分がいずれかの列で見つかった場合、レコードは一致してはならないということです)、それは可能ですか?
編集:これは、この例のクエリがどのようになるかです:
SELECT Id, TextHits.RANK Rank, Text_1, Text_2 FROM simple_table
JOIN CONTAINSTABLE(simple_table, (Text_1, Text_2), '"a" and not "b"') TextHits
ON TextHits.[KEY] = simple_table.Id
ORDER BY Rank DESC
実際のクエリはもう少し複雑です (より多くの列、より多くの結合など) が、これは一般的な考え方です :)
ありがとう!