如何将2个字段数据复制到Solr上的一个字段

Mir*_*dil 8 solr

我在solr with LatLngfields中有一个文档.我需要添加一个名为store包含来自Lat和的数据的新字段Lng.我试图使用copyField字段,但我收到错误:

字段存储不是多值和多个copyFields的目标(2)

这是我的配置:

<fields>
  <field name="lat" type="sdouble" indexed="true" stored="true" required="true" multiValued="false" />
  <field name="lng" type="sdouble" indexed="true" stored="true" required="true" multiValued="false" /> 
  <field name="store" type="text" indexed="true" stored="true"/>
</fields> 

<copyField source="lat" dest="store"/> 
<copyField source="lng" dest="store"/> 
Run Code Online (Sandbox Code Playgroud)

是否可以复制同一目标字段中两个字段的内容?

lib*_*cha 7

也许它已经过时但你可以使用"updateRequestProcessorChain"

<updateRequestProcessorChain name="composite-position">
  <processor class="solr.CloneFieldUpdateProcessorFactory">
    <str name="source">lat</str>
    <str name="source">lng</str>
    <str name="dest">store</str>
  </processor>
  <processor class="solr.ConcatFieldUpdateProcessorFactory">
    <str name="fieldName">store</str>
    <str name="delimiter">;</str>
  </processor>
  <processor class="solr.LogUpdateProcessorFactory" />
  <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
Run Code Online (Sandbox Code Playgroud)


Dav*_*ley 6

没有上下文的问题:

是否可以复制同一目标字段中两个字段的内容?"

肯定是答案是肯定的.示例模式用于将多个字段复制到公共"文本"字段(multiValued),以使一个字段的搜索更简单.

但是在查看更多上下文时,您实际上要做的是确定Solr的带有copyField的schema.xml是否可以获取输入对字段(在您的情况下为lat和lon),并将它们与中间逗号连接到特定字段.答案是不.在将数据提供给Solr时,您必须以这种方式准备数据,或者如果您使用DIH(DataImportHandler),则使用DIH变换器.我犹豫是否建议一个替代方案,但作为一个黑客,你可能会尝试将lat和lon放入store_0_coordinate和store_1_coordinate(或者可能是另一种方式).但实际上,这不是推荐的方法,即使它可能有效.


Ste*_*tei 3

你可以尝试设置storemultivalued

<field name="store" type="location" indexed="true" stored="true" multiValued="true" />
Run Code Online (Sandbox Code Playgroud)