我正在尝试在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
}
问题
感谢。
答案 0 :(得分:0)
我注意到的一件事是你试图在Solr和Nutch这两个地方检测内容的语言,通常你会使用其中一种。如果您在Nutch上使用language-identifier
插件,识别过程只能在Nutch上进行,而且基本上在Solr端,您将获得一份包含该语言的文档,因此您不需要使用{ {1}}处理器。
如果您希望在Solr端识别语言,可以使用Solr处理器,这样您就不会需要Nutch上的LangDetectLanguageIdentifierUpdateProcessorFactory
插件,只需选择其中一个。
至于字段问题,language-identifier
插件没有更改字段名称(https://github.com/apache/nutch/blob/master/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/LanguageIndexingFilter.java#L76)的选项,所以如果你使用它,你会得到一个索引中的language-identifier
字段。
对于第二个问题,您对lang
的期望是什么? Nutch / Solr上的语言识别只是检测文本的语言并将其放置在&#34;分类&#34;在一个字段中(在这种情况下为title_en
)。