0

多対多のタグシステムを実装しましたが、今度は全文検索を実行したいと思います。問題は、ANDが機能していないことです。検索語を使用してアイテムを検索するとtag1 AND tag2 AND tag3、レコードが3つのタグすべてでタグ付けされていても、行が表示されません。

これを解決するために、タグを連結してビューにラップするスカラー関数を試しました。ただし、これは次のエラーで失敗しました。

ビューによって参照される関数「dbo.GetTags」がユーザーまたはシステムのデータアクセスを実行するため、ビュー「ビュー」にインデックスを作成できません。

検索をORのみに制限しましたが、もう1つの多対多の関係があり、joinテーブルに追加情報があり、これも検索したいので、ANDが必要です。

私が考えることができる唯一のオプションは、トリガーunioningの束または使用です。inner joins

この問題を解決するための経験やアドバイスはありますか?

4

1 に答える 1

0

タグで検索する場合は、like 演算子を使用して検索できますか? または、全文検索が必要な何らかの理由がありますか?

それ以外の場合、タグ データ モデルの行ごとに 1 つのタグを格納すると仮定して、AND ファッション検索タグで全文検索を使用するには、次の 2 つのアイデアがあります。

  1. 全文検索を、全文検索ごとに 1 つのクエリに分割します。したがって、and 条件が 3 つある場合は、AND 条件ごとに 3 つの個別の全文検索クエリを作成します。

  2. すべてのタグをカンマ区切りのリストに連結する方法を見つけてください。カンマ区切りのリストをデータ モデルに保存します。おそらく、タグではなく、実際のデータを含むテーブルに保存します。あなたが考えているように、トリガーを使用して値を保存できます。次に、タグ付けモデルではなく、その 1 つの列に対して全文検索操作を実行します。このオプションは、ビューでの関数呼び出しが原因でインデックス付きビューを作成できない場合の回避策です。

オプション 2 は、オプション 1 よりも優れたパフォーマンスを発揮する可能性がありますが、より多くのストレージが必要になります。

于 2012-08-08T18:09:27.507 に答える