Nutch Solr自动语言检测 - 特定于语言的字段不出现

问题描述:

我试图在Solr中启用语言检测,但新的特定于语言的字段没有在索引后出现。Nutch Solr自动语言检测 - 特定于语言的字段不出现

这里是我的配置迄今:

solrconfig.xml中:

<processor class="org.apache.solr.update.processor.LangDetectLanguageIdentifierUpdateProcessorFactory"> 
       <str name="langid.fl">title</str> 
       <str name="langid.langField">lang_detect</str> 
       <str name="langid.fallback">en</str> 
       <bool name="langid.map">true</bool> 
       <str name="langid.map.lcmap">en:en, zh:zh</str> 
       <bool name="langid.individual">true</bool> 
       <str name="langid.individual.fl">title</str> 
</processor> 
<processor class="solr.LogUpdateProcessorFactory" /> 
<processor class="solr.RunUpdateProcessorFactory" /> 

托管的schema.xml:

<field name="lang123" type="string" indexed="true" stored="true" /> 
<field name="title" type="text_general" indexed="true" stored="true" /> 
<field name="title_en" type="text_en" indexed="true" stored="true" /> 
<field name="title_zh" type="text_cjk" indexed="true" stored="true" /> 

Nutch_HOME/conf目录/ nutch- site.xml:

<property> 
    <name>plugin.includes</name> 
    <value>protocol-http|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|indexer-solr|scoring-opic|urlnormalizer-(pass|regex|basic)|language-identifier</value> 
</property> 

运行完全重新抓取和索引到Solr之后,这是我为一个文件输出样本:

{ 
      "tstamp":["2017-07-18T08:44:35.470Z"], 
      "segment":[20170718164424], 
      "digest":["23c66ec3785ca1fe1e71bc636e6f6f37"], 
      "host":["test.com"], 
      "boost":[1.0], 
      "id":"https://test.com", 
      "title":["保新"], 
      "lang_detect":["zh"], 
      "metatag.keywords":["meta keywords here", 
       "meta keywords here"], 
      "url":["http://test.com"], 
      "content":["test test"], 
      "_version_":12312312 
    } 

问题

  1. 为什么 '郎' 字段出现,即使我有意将语言检测字段设置为'lang_detect'?
  2. “title_zh”,“title_en”都不会出现在结果中。步骤/配置是否错过?

谢谢。

我注意到的一件事是,你试图在Solr和Nutch两个地方检测内容的语言,通常你使用其中一种。如果您在Nutch上使用language-identifier插件,则识别过程仅针对Nutch,基本上在Solr方面,您将获得一种包含该语言的文档,因此您不需要使用LangDetectLanguageIdentifierUpdateProcessorFactory处理器。

如果您希望在Solr端识别语言,您可以使用Solr处理器,因此您不需要Nutch上的language-identifier插件,只需选择其中一个即可。

至于现场问题,language-identifier插件没有选项来更改字段的名称(https://github.com/apache/nutch/blob/master/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/LanguageIndexingFilter.java#L76),因此如果您使用它,您将在索引中获得一个lang字段。

对于第二个问题,你期望在title_en上有什么? Nutch/Solr上的语言标识检测到文本的语言,并将该“分类”放入字段(本例中为lang_detect)。

+0

我明白了。那么哪个部分能够通过语言自动检测“标题”,并将其复制到各自的“title_en”,“title_zh”字段? – codeandfootball

+0

因为我们可以在Solr输出中看到'lang_detect'字段,所以Solr上的语言检测正在工作,请尝试删除'langid.individual。*'选项并使用Solr Admin UI手动索引文档以测试,现在不确定由于您在'langid.fl'中设置了相同的字段,因此个别设置会发生什么情况。我认为(老实说不记得在这一点上),这是我在过去使用的配置https://gist.github.com/jorgelbg/fe7944e8ca952074d293cd250100c1db,试试看 –