2017-02-07 9 views
0

I SOLRの多値フィールドをカウントしたい。solrの多値フィールドのカウント方法

Iは、2つの多値フィールドはSTORE_IDと をfilter_id有し、iは

STORE_ID = {0,3,7} count_store_id = 3

filter_id = {12のように、これらのフィールドの値をカウントします、 13,20,22,59,61,62,145} count_filter_id = 8

enter image description here

とSTORE_ID更新であるときにもcount_store_id可能ということです

@@ Ashrafulイスラム教デフォルト

によってSolrのでアップデート - あなたは私に言ったように私はそれを変更しますが、それを見つける、ここで私は、画像を添付して起こるだろう何もありません。

enter image description here

+0

store_idまたはfilter_idのサイズを数えますか? –

+0

http://stackoverflow.com/questions/6240092/solr-function-query-that-operates-on-count-of-multivalued-field –

+0

私は質問はありません、私はカウントなしにしたい –

答えて

2

はい。

スキーマファイル

にstore_id_countとfilter_id_countフィールドを追加し、あなたがsolrconfig.xml

に定義したチェーンの最後にRunUpdateProcessorFactoryを追加することを忘れないでください、あなたのsolrconfig.xmlにラインの下に

<updateRequestProcessorChain name="multivaluecountnum" default="true"> 
    <processor class="solr.CloneFieldUpdateProcessorFactory"> 
    <str name="source">store_id</str> 
    <str name="dest">store_id_count</str> 
    </processor> 
<processor class="solr.CloneFieldUpdateProcessorFactory"> 
    <str name="source">filter_id</str> 
    <str name="dest">filter_id_count</str> 
    </processor> 
    <processor class="solr.CountFieldValuesUpdateProcessorFactory"> 
    <str name="fieldName">store_id_count</str> 
    </processor> 
<processor class="solr.CountFieldValuesUpdateProcessorFactory"> 
    <str name="fieldName">filter_id_count</str> 
    </processor> 
    <processor class="solr.DefaultValueUpdateProcessorFactory"> 
    <str name="fieldName">store_id_count</str> 
    <int name="value">0</int> 
    </processor> 
<processor class="solr.DefaultValueUpdateProcessorFactory"> 
    <str name="fieldName">filter_id_count</str> 
    <int name="value">0</int> 
    </processor> 
<processor class="solr.LogUpdateProcessorFactory" /> 
    <processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain> 

を追加

<field name="store_id_count" type="int" stored="true"/> 
    <field name="filter_id_count" type="int" stored="true"/> 

Reindex docsとqueryを実行すると、resultに2つの新しいフィールドstore_id_countとfilter_id_countが表示されます。

希望はこちら、 Vinod。

+0

ありがとうVinod、今私はmysqlデータベースからデータをインポートするときの作業。 –

+0

しかし、私は新しい文書を挿入すると1つの問題があり、それは動作しません。それは私がデータベースから新しい文書を挿入するときではなく、データからデータをインポートするときにのみ機能しています。 –

+0

このプロセスはsolr側で行われます。 solrへのインデックス作成中にすべてのドキュメントについて、1つの新しいフィールド(あなたの場合はcount)が計算され、docに追加されます。新しいフィールドで更新されたdocはSolrに索引付けされます。 – vinod

1

あなたはCountFieldValuesUpdateProcessorFactoryを使用するカスタムUpdateRequestProcessor chainでこれを行うことができます。あなたが複数値フィールドのカウント値を取得することができますUpdaterequestProcessor定義するカスタムを使用することにより、アレクサンドルRafalovitchによって示唆されているように

+0

Thsnks Alexandre Rafalovitch、それは今働いています。 –

関連する問題