8

我在 solr 中有一个带有LatLng字段的文档。我需要添加一个名为的新字段,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"/> 

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

4

4 回答 4

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>
于 2016-10-16T13:32:01.937 回答
6

在没有上下文的情况下提出您的问题:

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

答案是肯定的。示例模式通过将多个字段复制到一个公共的“文本”字段(多值)来实现这一点,从而使按一个字段进行搜索更简单。

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

于 2012-06-22T20:39:35.447 回答
3

You could try to set store as multivalued

<field name="store" type="location" indexed="true" stored="true" multiValued="true" />
于 2012-06-22T10:49:28.230 回答
0

你可以尝试这样的事情:

两个双在一个位置

如果您可以使用 DIH(数据导入处理程序)。希望他们会有所帮助!

于 2012-06-25T07:05:45.827 回答