1

我有一个字段“文本”,我需要根据“文本”的语言将其复制到 text_en 或 text_es。下面是我的 managed_schema.xml:

<updateRequestProcessorChain name="langid">
<processor class="org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory">
       <bool name="langid">true</bool>
       <str name="langid.fl">text</str>
       <str name="langid.langField">tweet_lang</str>
       <str name="langid.whitelist">es,en</str>
       <bool name="langid.map">true</bool>
       <!--bool name="langid.map.individual">true</bool-->
        <str name="langid.map.individual.fl">text</str>
    <bool name="langid.map.keepOrig">true</bool>
       <str name="langid.fallback">ko</str>
     </processor>
     <processor class="solr.LogUpdateProcessorFactory" />
     <processor class="solr.RunUpdateProcessorFactory" />
   </updateRequestProcessorChain>

我创建了一个复制字段 text_en 和 text_es。当我以西班牙语发布数据时,数据也从 text 复制到 text_en 和 text_es!

我该如何解决这个问题?

谢谢!

4

2 回答 2

1

text通过从to创建 copyFields,无论语言检测如何text_entext_es您都可以将传入数据输入两个字段,这就是copyField应该做的。

updateRequestProcessor 实际上会制作一个副本(而不是移动),因为您设置了<bool name="langid.map.keepOrig">true</bool>.

除此之外,处理器的配置看起来不错,只需删除这些 copyFields 并确保映射字段text_entext_es在您的架构中得到很好的定义。

于 2016-09-16T09:01:53.917 回答
0

感谢您的提醒!通过删除复制字段和创建的动态字段解决了该问题

  • *_es
  • *_enschema.xml
于 2016-09-17T14:21:00.650 回答