solr中是否存在multiValue字段排序解决方法

时间:2015-11-04 08:53:47

标签: solr

我正在尝试寻找替代方法来对多值字段进行排序。

我知道之前已经问过这个问题并且解决方案是关于min和max的,但这不是我正在寻找的策略。

我们是否有办法将多值复制到另一个可用于排序的字段?

例如:

<field name="cat" type="string" indexed="true" stored="true" 
multiValued="true"/>

<copyField source="cat" dest="firstcat"/>

<field name="firstcat" type="string" indexed="true" stored="false" 
multiValued="false"/>

1 个答案:

答案 0 :(得分:0)

回答我的问题。

上面的copyfield不起作用,并且当多值字符串中有多个值时会抛出异常。我的意思是,呃。明显。

一个有效的解决方案是使用solrconfig.xml中的updateRequestProcessorChain配置并将其添加到更新处理程序链中。

以下是一个示例:

<updateRequestProcessorChain name="concatFields">
  <processor lass="solr.CloneFieldUpdateProcessorFactory">
    <str name="source">str1</str>
    <str name="dest">str2</str>
  </processor>
  <processor class="solr.ConcatFieldUpdateProcessorFactory">
    <str name="fieldName">str2</str>
    <str name="delimiter">_</str>
  </processor>
  <processor class="solr.CloneFieldUpdateProcessorFactory">
    <str name="source">str2</str>
    <str name="dest">str3</str>
  </processor>
  <processor class="solr.LogUpdateProcessorFactory" />
  <processor class="solr.RunUpdateProcessorFactory" />    
</updateRequestProcessorChain>

然后将处理器链接到路径:

<initParams path="/update/**">
<lst name="defaults">
<str name="update.chain">concatFields</str>
</lst>
</initParams>