如何能2级字段中的数据复制到一个字段上的Solr(How can copy 2 fields dat

2019-07-30 02:12发布

我在Solr的一份文件LatLng领域。 我需要添加一个名为新场store包含无论从获取的数据LatLng 。 我试图用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"/> 

是否有可能同一个目的地领域内的两个字段的内容复制?

Answer 1:

也许是过时的,但你可以使用“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>


Answer 2:

以你的问题没有上下文:

是否有可能同一个目的地领域内的两个字段的内容复制?”

答案是肯定的,当然。 示例模式这是否与多个字段复制到一个共同的“文本”字段(多值),使一个简单的现场搜索。

但看多情况下,你实际上是试图做的是确定是否Solr的用copyField schema.xml中可以输入对字段(纬度和经度,你的情况),并与中间的逗号,以某一特定领域将它们连接起来。 答案是不。 你必须把它给Solr的时候准备数据这种方式,或者,如果您使用的是DIH(在DataImportHandler)使用DIH变压器。 我毫不犹豫地提出一种替代,但作为一个黑客,你可以尝试把纬度和经度为store_0_coordinate和store_1_coordinate(或者也许是周围的其他方法)。 不过说真的,这是不是即使它可能工作一推荐的方法。



Answer 3:

你可以尝试设置storemultivalued

<field name="store" type="location" indexed="true" stored="true" multiValued="true" />


Answer 4:

你可以尝试这样的事情:

两个在一个位置双

如果你可以使用DIH(数据处理程序进口)。 希望泰德将帮助!



文章来源: How can copy 2 fields data to one field on Solr
标签: solr