根据语言对字段内容进行不同的标记化-ApacheSolr

根据语言对字段内容进行不同的标记化-ApacheSolr,solr,Solr,我在ApacheSolr中有一个名为“content”的字段,该字段目前被索引/标记为英语字段,这并不总是正确的,有时它有日语 是否根据语言对该字段进行不同的处理?也许有一个fq=“language:japanese(伪代码)或类似的东西 允许在单个字段上处理多种语言的最佳方式是什么 我们目前有第二个字段,其内容与设置为日语的内容相同,但我们确实希望对该字段进行处理。请查看Solr功能。它支持根据检测到的语言和其他高级参数自动重命名/映射字段 在您的情况下,一个想法是根据在content中检测到

我在ApacheSolr中有一个名为“content”的字段,该字段目前被索引/标记为英语字段,这并不总是正确的,有时它有日语

是否根据语言对该字段进行不同的处理?也许有一个
fq=“language:japanese
(伪代码)或类似的东西

允许在单个字段上处理多种语言的最佳方式是什么

我们目前有第二个字段,其内容与设置为日语的内容相同,但我们确实希望对该字段进行处理。

请查看Solr功能。它支持根据检测到的语言和其他高级参数自动重命名/映射字段

在您的情况下,一个想法是根据在
content
中检测到的语言将
content
映射到
content\u en
content\u ja
。以下是solrconfig.xml中的UpdateRequestProcessor定义示例:

 <processor class="org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory">
   <bool name="langid">true</bool>
   <str name="langid.fl">content</str>  <!-- list of fields to be processed -->
   <str name="langid.langField">language</str>  <!-- where goes returned langcode -->
   <str name="langid.whitelist">en,ja</str>  <!-- what language to detect -->
   <bool name="langid.map">true</bool>  <!-- mapping langcode (add _suffix) -->
   <str name="langid.map.lcmap">en_GB:en en_US:en</str>  <!-- custom mapping -->
 </processor>

真的
内容
语言
嗯,是的
真的
恩(英国):恩(美国):恩

您必须更新schema.xml,以便定义
content\u en
content\u ja
,并确保它们绑定到相应的字段类型以进行索引。

如何检测内容中的特定语言?例如,这是怎么做的?这是一种使用Tika或LangDetect实现的方法(示例中使用了Tika)。编辑solrconfig.xml以定义可以放置处理器定义的位置。然后编辑update requestHandler以声明使用过程或链。