如何计算solr中的多值字段

时间:2017-02-07 09:33:57

标签: solr

我想在SOLR中计算多值字段。

我有两个多值字段store_id和filter_id 我想像

那样计算这些字段值

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默认情况下也会在solr中更新

@@ Ashraful Islam - 正如你告诉我的我会改变它但是没有任何事情发生在这里我附上图片找到它。

enter image description here

2 个答案:

答案 0 :(得分:2)

根据Alexandre Rafalovitch的建议,使用定义自定义UpdaterequestProcessor,您可以获得多值字段的计数值。

在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>

不要忘记在solrconfig.xml中定义的任何链的末尾添加RunUpdateProcessorFactory

在架构文件中添加store_id_count和filter_id_count字段

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

Reindex文档和查询,您将在结果中看到两个新字段store_id_count和filter_id_count。

希望这有助于, 维诺德。

答案 1 :(得分:1)

您可以使用UpdateRequestProcessor chain的自定义CountFieldValuesUpdateProcessorFactory执行此操作。