Solr:是否可以在“copyField”的源代码中调用“concat”函数?

n3schb8v  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(161)

例如,如果我在下面定义了“copyField”,solr在启动时就会抛出这个异常:org.apache.solr.common.SolrException:copyField source:'concat('i1 ',id1)'不是glob,且不符合任何明确字段或dynamicField。

<copyField source="concat('i1', id1)" dest="test" />
<copyField source="concat('i2', id2)" dest="test" />

但是“concat('i1 ',id1)”可以设置为查询请求的“fl”而不会出现任何错误。

t9eec4r0

t9eec4r01#

你可以存档相同的帮助下更新请求处理器的Solr
您可以使用ConcatFieldUpdateProcessorFactory
使用可配置的分隔符连接与指定条件匹配的字段的多个值。
例如:
1.向solrconfig.xml添加一个新的更新请求处理器链:

<updateRequestProcessorChain name="concatFields">
  <processor class="solr.CloneFieldUpdateProcessorFactory"> 
      <str name="source">field1</str> 
      <str name="dest">field4</str> 
    </processor> 
  <processor class="solr.ConcatFieldUpdateProcessorFactory"> 
      <str name="fieldName">field4</str> 
      <str name="delimiter">_</str> 
    </processor>
    <processor class="solr.LogUpdateProcessorFactory" /> 
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

1.将该链添加到适当更新处理程序中

<requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
         <lst name="defaults">
         <str name="stream.contentType">application/csv</str>
         <str name="update.chain">concatFields</str>    </lst> </requestHandler>

有关更新处理器的更多详细信息,请访问以下链接。Update Request Processors

注意:重新启动Solr服务器并为新文档编制索引。

相关问题