我正在尝试寻找替代方法来对多值字段进行排序。
我知道之前已经问过这个问题并且解决方案是关于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"/>
答案 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>