2012-01-08 12 views
3

シナリオ:SOLR多値フィールド

私は、次の(簡体字)、データベーステーブルのシナリオがあります。

ID ProductName   ProductCategory Colour Price 
---------------------------------------------------------- 
1 BatmanTShirt   T-Shirt   Black 22 
2 BatmanTShirt   T-Shirt   Blue  20 
3 SupermanTShirt  T-Shirt   Blue  19 
4 SpidermanTrousers Trousers   Red  28 
5 SpidermanTrousers Trousers   Black 30 

マイウィッシュ:SOLR指数で

を、私は希望このデータは標準化された方法でマッピングされ、5つのSOLRドキュメント(以下に示すように)が5の代わりに作成されます。

<doc1> 
    <ID>1</ID> 
    <ProductName>BatmanTShirt</ProductName> 
    <ProductCategory>T-Shirt</ProductCategory> 
    <OtherDetails>{ {1, Black, 22}, {2, Blue, 20} }</OtherDetails> 
</doc1> 
<doc2> 
    <ID>3</ID> 
    <ProductName>SupermanTShirt</ProductName> 
    <ProductCategory>T-Shirt</ProductCategory> 
    <OtherDetails>{ {3, Blue, 19} }</OtherDetails> 
</doc2> 
<doc3> 
    <ID>4</ID> 
    <ProductName>SpidermanTrousers</ProductName> 
    <ProductCategory>Trousers</ProductCategory> 
    <OtherDetails>{ {4, Red, 28}, {5, black, 30} }</OtherDetails> 
</doc3> 

いくつかの注意事項:

  • <ID>ユニークIDを加えたグループ化するとき取り残されている他の詳細が含まれますグループ
  • <OtherDetails>から最低限のIDが含まれます。これは、リストのデータ型が{ID、Color、Price}の別のListを保持する複数値フィールドになります。

質問:

誰でもこれが可能な方法を知っていますか?

P.S.

この 'グループ化'を行う理由は、私がProductCategoryをファセットしたいからです。私はProductCategoryにファセッティングを使用する場合、現在生成数は次のようになります。

T-Shirt (3) 
Trousers (2) 

今、私が欲しいものを色なしProductCategoryの面にあると私は唯一の2 Tシャツを持ちたいという価格データは、(の1バットマンとスーパーマンの1人)と唯一のズボン(スパイダーマンズ)。したがって、私が示したいのはこれです:

T-Shirt (2) 
Trousers (1) 

私はいくつかの研究を行なったし、(ポストグループファセットまたはMatrixカウントと呼ばれている)、この機能はthis SOLR patchで述べたように、現在WIPであることが分かりました。ですから、一時的な回避策が必要です。これは、これが完了するまでに時間がかかる場合があります。

答えて

1

パッチは単一値フィールドで正常に動作するため、このパッチとグループ化を使用するのが最善の方法です。

データベースにあるようにデータをインデックスするだけで、複数値のフィールドを使用する必要はありません。

latest codeをTortoiseSVNでダウンロードしてパッチを適用することができます。 WAR(またはJAR)の構築はEclipseで非常に簡単です。ダウンロードしたばかりのコードで新しいプロジェクトを開始し、rootとsolrディレクトリのbuild.xmlにantスクリプトを実行してください。

+1

おかげでO.クラインが答えました。私はToirtoiseSVNでコードをダウンロードしました。現在、私はANTを使ってビルドしていますが、あなたが言及したようにEclipseにインポートしたいのですが、それをインポートしてコンパイルする方法の詳細を教えてください。ありがとう。 – mrd3650

関連する問題