solr中是否有多值字段排序解决方法

uelo1irk  于 2022-11-23  发布在  Solr
关注(0)|答案(1)|浏览(231)

我正在尝试寻找对多值字段进行排序的替代方法。
我知道这个问题以前被问过,解决方案谈到了最小和最大,但这不是我要找的策略。
是否有办法将多值复制到另一个字段,以便用于排序?
例如这样的例子:

<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"/>
6qfn3psc

6qfn3psc1#

回答我的问题。
当多值字符串中有多个值时,上面的复制字段将不起作用,并将抛出异常。我的意思是,当然。
一个可行的解决方案是使用solrconfig.xml中的updateRequestProcessorChain配置,并将其添加到更新处理程序链中。
下面是一个示例:

<updateRequestProcessorChain name="concatFields">
  <processor class="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>

相关问题