我在solr with Lat
和Lng
fields中有一个文档.我需要添加一个名为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)
是否可以复制同一目标字段中两个字段的内容?
也许它已经过时但你可以使用"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)
没有上下文的问题:
是否可以复制同一目标字段中两个字段的内容?"
肯定是答案是肯定的.示例模式用于将多个字段复制到公共"文本"字段(multiValued),以使一个字段的搜索更简单.
但是在查看更多上下文时,您实际上要做的是确定Solr的带有copyField的schema.xml是否可以获取输入对字段(在您的情况下为lat和lon),并将它们与中间逗号连接到特定字段.答案是不.在将数据提供给Solr时,您必须以这种方式准备数据,或者如果您使用DIH(DataImportHandler),则使用DIH变换器.我犹豫是否建议一个替代方案,但作为一个黑客,你可能会尝试将lat和lon放入store_0_coordinate和store_1_coordinate(或者可能是另一种方式).但实际上,这不是推荐的方法,即使它可能有效.
你可以尝试设置store
为multivalued
<field name="store" type="location" indexed="true" stored="true" multiValued="true" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17608 次 |
最近记录: |