2

Solr には、次のような文書構造があります (無関係なフィールドは除外されています)。

<field name="review_id" type="int" indexed="true" stored="true"/>
<field name="product_id" type="int" indexed="true" stored="true"/>
<field name="product_category" type="string" indexed="true" stored="true" multiValued="true"/>

ここの product_id は、1 対多の wrt review_id です

次のようにして、各カテゴリのレビューのファセット数を取得できます。

/select?q=*:*&rows=0&facet=true&facet.field=product_category

product_category でファセットを実行できるようにしたいのですが、review_id:s の数ではなく、個別の product_id:s の数を取得します。Solrでこれを行うことは可能ですか?

4

1 に答える 1

0

Solrインデックスには1対多はありません。リレーショナルデータベースではありません。インデックスはレビューまたは製品に関するものであり、検索対象によって異なります。スキーマ設計に関するSolrwikiを引用するには:

Solrは1つのテーブルを提供します。セットデータベーステーブルをインデックスに格納するには、通常、一部のテーブルを非正規化する必要があります。非正規化を回避する試みは通常失敗します。

したがって、最初のステップはスキーマ設計を修正することです。その後(そして常に上記の事実を念頭に置いて)、ファセットやその他のものを設計することができます。

于 2010-08-18T13:18:57.173 に答える