Nutch Solr 自动语言检测 - 未显示特定于语言的字段



我正在尝试在 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" />

托管架构.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"字段,即使我有意将语言检测字段设置为"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(。

最新更新