一般的なファセット検索として、アプリケーションからの選択によってフィルター処理されたデータを返すために SQL サーバーにアクセスするアプリケーションがあります。すぐに使用できるソリューションをいくつか見ましたが、これらは高価であり、カスタムのものを構築することを好みますが、どこから始めればよいかわかりません。
データベース構造は次のようになります。
PRODUCT テーブルのデータは、TAG テーブルのタグによって検索されます。TAG テーブルにある値は次のようになります。
ID NAME
----------------------
1 Blue
2 Green
3 Small
4 Large
5 Red
これらは、ProductTag テーブルを介して製品に関連付けられます。
このセットアップから 2 つのデータ グループを返す必要があります。
- 選択されたタグにのみ関連する製品 (単一または複数)
- 1 つまたは複数の選択されたタグによって既に絞り込まれている製品に対しても選択できる残りのタグ。
可能であれば、これをすべてSQLサーバー内に配置し、ストアドプロシージャとして2つに分けたいと思います。
最近では、ほとんどの Web サイトにこの機能が組み込まれています。たとえば、http ://www.gnc.com/family/index.jsp?categoryId=2108294&cp=3593186.3593187 (「Narrow By」と呼ばれています) 。
私はこれを行う方法をしばらく探していましたが、ストアドプロシージャをこの性質で作成する必要がある場合、次のように CSV 値を受け入れる 1 つのパラメーターが必要であると推測しています。
[dbo].[GetFacetedProducts] @Tags_Selected = '1,3,5'
[dbo].[GetFacetedTags] @Tags_Selected = '1,3,5'
このアーキテクチャでは、これらのストアド プロシージャに対してどのような種類のクエリを作成する必要があるか、またはアーキテクチャに何らかの欠陥があるかどうかを知っている人はいますか? このようになる前に、ファセット検索を作成した人はいますか? もしそうなら、このようなものを作るにはどのような種類のクエリが必要ですか? 私は頭を悩ませているだけだと思います。このようなものを作る方法を誰かに示すものはあまりありません.