に関する課題に直面していますFull Text Search in SQL SERVER 2008.
それぞれの列 a, b を持つ 2 つのテーブル A と B があります。ここで、これら 3 つのテーブルすべてに対して全文検索を実行し、検索の関連性を組み合わせたいと考えています。
つまり、検索テキストが 2 つのテーブルすべてで見つかった場合、ランクが高くなるはずです。col でのみ見つかった場合。表 A の a の場合、col のみにある場合は 2 番目にランク付けする必要があります。テーブルBのbなら、3位になるはず
これはどのように行うことができますか。
このようなクエリ、
SELECT A.a, B.b, C.c, a.Title, akt.[Rank] + bkt.[Rank] /2 AS [Rank]
FROM PublicationSearch b
INNER JOIN Publication a ON a.Id = b.Id
INNER JOIN FREETEXTTABLE(A, a, 'search text') akt ON a.Id = akt.[Key]
INNER JOIN FREETEXTTABLE(B, b, 'search text') bkt ON b.Id = bkt.[Key]
ORDER BY [Rank] DESC
何が起こっているのかというと、検索結果が両方のテーブルに適切なランクで存在する場合、検索結果が表示されます。
ただし、検索結果が 1 つのテーブルにのみある場合は、表示されません。を適用するLEFT JOIN
と、レコードが取得されますが、RANK = Null
.