2012-03-01 6 views
2

2つのフィールド名を組み合わせてファセットを取得する方法が必要です。それが今であるように私が何を意味するかをお見せするために、クエリを見てみましょう:複数の連結フィールドのソルファセット

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":16, 
    "params":{ 
     "facet":"true", 
     "indent":"true", 
     "q":"productId:(1 OR 2 OR 3 OR 4)", 
     "facet.field":["productMetaType", 
     "productId"], 
     "rows":"10"}}, 
    "response":{"numFound":4,"start":0,"docs":[ 
     { 
     "productId":1, 
     "productMetaType":"PRIMARY_PHOTO", 
     "url":"1_PRIM.JPG"}, 
     { 
     "productId":1, 
     "productMetaType":"OTHER_PHOTO", 
     "url":"1_1.JPG"}, 
     { 
     "productId":1, 
     "productMetaType":"OTHER_PHOTO", 
     "url":"1_2.JPG"}, 
     { 
     "productId":2, 
     "productMetaType":"OTHER_PHOTO", 
     "url":"2_1.JPG"}] 
    }, 
    "facet_counts":{ 
    "facet_queries":{}, 
    "facet_fields":{ 
     "productMetaType":[ 
     "PRIMARY_PHOTO",1, 
     "OTHER_PHOTO",3], 
     "productId":[ 
     "1",3, 
     "2",1]}, 
    "facet_dates":{}, 
    "facet_ranges":{} 
    } 
} 

は、私は2つのファセットフィールド、productMetaTypeproductIdを取得します。私は戻って、このような何かを、データを取得するように、これらのフィールドを組み合わせ何とか私は何をする必要がある:

1_PRIMARY_PHOTO, 1, 
1_OTHER_PHOTO, 2, 
2_PRIMARY_PHOTO, 0, 
2_OTHER_PHOTO, 1 

これをピボット機能のでしょうか?残念ながら、私たちはSolr 3.1を実行しているので、ピボットは利用できませんが、それがこれを行う唯一の方法であれば、私はアップグレードのためのいくつかの弾薬を持っているかもしれません。

私が考えることができる唯一の他のものは、フィールド名をどのように連結するかでした。私はSolrには新しく、可能なことは分かりません。アドバイスや援助をいただければ幸いです。あなたの時間をありがとう。

答えて

4

はい、ピボットはこのトリックを行いますが、ご存知のように、この機能はSolrトランクでのみ使用できます。

両方のフィールドを組み合わせるというあなたの考えもうまくいくはずです。あなたのフィールドは値の数が限られている場合、実際に、これを行うための最も簡単で柔軟な方法は、facet queriesを使用することです:

  • 商品コード:1とproductMetaType:PRIMARY_PHOTO
  • PRODUCTID:2とproductMetaType:OTHER_PHOTO
  • 商品コード:1とproductMetaType:OTHER_PHOTO
  • PRODUCTID:2とproductMetaType:PRIMARY_PHOTO

そうでない場合は、ちょうどあなたのSolrのschema.xmlウィットに新しいフィールドを作成しますhの文字列型では、前回と同じようにドキュメントを追加してインデックスを再作成しますが、この新しいフィールドを使用すると、2つのフィールド値の区切り文字として '_'を使用して完全に動作します。

+0

これはうまくいった!ありがとう!今では、レスポンスにこれらのファセットクエリの名前を付ける方法があっただけなので、アプリケーションのデータをどうするかを決めるためにクエリを解析する必要はありません。いずれにせよ、私はこの仕事をすることができます。再度、感謝します! – Brad

+0

私は現在Solrインスタンスをテストしていませんが、ローカルのパラメータで**キー**パラメータを使用してこれを行うことができると思います。 http://wiki.apache.org/solr/SimpleFacetParameters#key_:_Changing_the_output_key – jpountz

+0

を参照してくださいありがとう、それはまた素晴らしい仕事! – Brad

関連する問題