2015-11-04 104 views
0

我正在尝试寻找排序多值字段的替代方法。在solr中是否有multiValue字段排序解决方法

我知道这个问题已被问及之前的解决方案谈论最小和最大但这不是我正在寻找的策略。

有没有一种方法,我们可以做一个多值的COPY到另一个可用于排序的领域?

例如像这样:

<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

回答我的问题。

上述复制字段不起作用,并且在多值字符串中存在多个值时将引发异常。我的意思是,杜。明显。

一个工作解决方案是使用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> 
相关问题