6

一般的なファセット検索として、アプリケーションからの選択によってフィルター処理されたデータを返すために SQL サーバーにアクセスするアプリケーションがあります。すぐに使用できるソリューションをいくつか見ましたが、これらは高価であり、カスタムのものを構築することを好みますが、どこから始めればよいかわかりません。

データベース構造は次のようになります。 ここに画像の説明を入力

PRODUCT テーブルのデータは、TAG テーブルのタグによって検索されます。TAG テーブルにある値は次のようになります。

 ID      NAME
 ----------------------
 1       Blue
 2       Green
 3       Small
 4       Large
 5       Red

これらは、ProductTag テーブルを介して製品に関連付けられます。

このセットアップから 2 つのデータ グループを返す必要があります。

  1. 選択されたタグにのみ関連する製品 (単一または複数)
  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'

このアーキテクチャでは、これらのストアド プロシージャに対してどのような種類のクエリを作成する必要があるか、またはアーキテクチャに何らかの欠陥があるかどうかを知っている人はいますか? このようになる前に、ファセット検索を作成した人はいますか? もしそうなら、このようなものを作るにはどのような種類のクエリが必要ですか? 私は頭を悩ませているだけだと思います。このようなものを作る方法を誰かに示すものはあまりありません.

4

3 に答える 3

3

ファセット検索に使用される RDBMS は、当面の仕事には不適切なツールです。ファセット検索は集合ベースの SQL 言語では表現が難しい多次元検索です。データキューブなどを使用すると、必要な機能の一部が得られる場合がありますが、構築するのはかなりの作業になります。

同様の要件に直面したとき、最終的に、ファセットや他の多くの検索指向の機能をサポートする Apache Solr 検索エンジンを利用することにしました。

于 2013-08-21T01:14:06.413 に答える