全文検索を使用して、データベース内の2つのテーブルから複数の列を検索する必要があります。問題の2つのテーブルには、関連する列の全文索引があります。
全文検索を選択した理由:1。アクセントのある単語を簡単に検索できるようにするため(カフェ)2。単語の近接度などに応じてランク付けできるようにするため。3。「XXXのことですか?」機能性
課題を説明するために、ダミーのテーブル構造を次に示します。
テーブルブック BookID 名前(全文索引) メモ(全文索引) テーブル棚 ShelfID BookID テーブルShelfAuthor AuthorID ShelfID テーブル作成者 AuthorID 名前(全文索引)
書籍名、書籍ノート、著者名を検索する必要があります。
私はこれを達成するための2つの方法を知っています:
フルテキストインデックス付きビューの使用:これは私の好みの方法でしたが、ビューをフルテキストインデックスにするには、スキーマにバインドする必要があり、外部結合がなく、一意のインデックスがあるため、これを行うことはできません。 。データを取得するために必要なビューは、これらの制約を満たしていません(データを取得するために必要な他の多くの結合テーブルが含まれています)。
ストアドプロシージャでの結合の使用:このアプローチの問題は、結果をランクで並べ替える必要があることです。テーブル全体で複数の結合を行っている場合、SQLServerはデフォルトで複数のフィールドを検索しません。2つのリンクされたテーブルで2つの個別のCONTAINSクエリを組み合わせることができますが、2つの検索クエリから組み合わせたランクを抽出する方法がわかりません。たとえば、「Arthur」を検索する場合、BookクエリとAuthorクエリの両方の結果を考慮し、それに応じて重み付けする必要があります。