Solr,将字符串数组转换为有效载荷数组

时间:2019-11-21 13:33:32

标签: solr

我有一个连接到mongo数据库的mongoconnector的solrcloud。我想在solr中使用有效负载功能,但无法正确转换。我设法将其导入为类似

的字符串
 "topCategoryScoreList":["2107|510",
          "1225|940"],

然后是一个简单的复制字段:

<copyField source = "topCategoryScoreList" dest = "topCategoryPayload"/>

该字段定义为:

<field name="topCategoryPayload" type="payload" indexed="true" stored="true" multiValued="true"/>

和有效载荷类型:

<fieldtype name="payload" stored="true" indexed="true" class="solr.TextField" >
  <analyzer>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.DelimitedPayloadTokenFilterFactory" 
      delimiter='|' encoder="float"/>
  </analyzer>
</fieldtype>

但是没有用。我还尝试写一个updateRequestProcessorChain

<updateRequestProcessorChain name="payload">
       <processor class="solr.CloneFieldUpdateProcessorFactory">
       <lst name="source">
                    <str name="fieldName">topCategoryScoreList</str>
       </lst>
                    <str name="dest">topCategoryPayload</str>
       </processor>
       <processor class="solr.ConcatFieldUpdateProcessorFactory">
            <str name="fieldName">topCategoryPayload</str>
            <str name="delimiter">|</str>
       </processor>
    <processor class="solr.LogUpdateProcessorFactory" />
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

但该注释也有效。我设法解决的问题是将纬度和经度连接在一个位置字段中(但这些不是多值字段)。 我应该为此写一个插件吗?还是其他想法? 任何帮助或建议,将不胜感激。

1 个答案:

答案 0 :(得分:1)

可能您必须简化并尝试:

   <processor class="solr.CloneFieldUpdateProcessorFactory">  
                <str name="fieldName">topCategoryScoreList</str>
                <str name="dest">topCategoryPayload</str>
   </processor>

<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />