2012-04-08 8 views
1

私が働いている店は衣料品を販売しています。服の各アイテムは複数の品種があります。例えば、シャツAが入っているかもしれません:レッド、レッド、ブルー、レッド、ブルー、レッド、ホワイト、ミディアム。Solr検索ファセット:どのように商品を数え、製品種別ではないのですか

最初は、さまざまなものをsolrのドキュメントとして追加しました。したがって、上記の製品では、それぞれが同じProduct IDを持つ6つのsolrドキュメントを追加しました。私は製品IDで結果をグループ化するためにsolrを得て、すべてが完璧に機能しました。

しかし、ファセット数はすべて品種数であり、製品数ではありませんでした。 (例えば、それがシステム内の唯一の製品である場合)。

赤色(2) 青色(2) ホワイト2)

どちらが正しいかは、色ごとに2つの文書が追加されました。しかし、実際に私が見たいのはこれです:

レッド(1) ブルー(1) ホワイト(1)

各色ごとに1つだけの製品があるので。

だから私はそれをするために、私は各solrドキュメントを製品にする必要があると思っています。その場合

私は、製品を追加し、フィールド「カラー」3回つの赤、一つの青色一白を追加し、同様にフィールドサイズを3回追加します。しかし今、solrは各色にどのようなサイズが入るのか本当に分かりません。たぶん、私は小さな白いだけです。

ファセットカウントを正しく設定するにはどうすればよいでしょうか?

答えて

7

私はここに

http://wiki.apache.org/solr/FieldCollapsing#Request_Parameters

特別にクエリに追加これらのパラメータは

group=true 
group.field=product_id" 
group.limit=100 
group.facet=true 
group.ngroups=true 

group.facetが本当に作るものです。この使用してグループ化(フィールド崩壊)を行う可能性が判明ファセットは私が望むようなグループと一緒に働いています。

+0

は魅力的です。共有のためのThanx! – kieste

1

あなたは2つの選択肢があると思います。

オプション1:

あなたはファセット値(与えられた例ではレッド、ブルー&ホワイト)のリストを取得したら、その後、フィルタとして各ファセット値を再び元のクエリを発射。たとえば、元のクエリがq=xyz&group.field=ProductIDだった場合は、q=xyz&group.field=ProductID&group.ngroups=true&fq=color:Redを発射します。レスポンスの値がngroupsになると、赤の必要数が表示されます。同様に、青と白の別のクエリを起動します。

オプション2:

商品コードと色の両方を含むProduct_Colorと呼ばれる別のフィールドを作成します。たとえば、製品IDがABC123で、色がRedの場合、Product_ColorABC123_Redになります。さて、色のファセットを取得するには、ProductIDの代わりにProduct_Colorをグループ化し、正しい値で必要なファセットを取得する個別のクエリを起動します。 Remeberがこれを動作させるにはgroup.truncate=trueと設定してください。

0

Facet Pivotを調べると、適切な数とフィルタリングを持つ単一のドキュメント、ツリーのようなファセットを持つことができます。

関連する問題