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

时间:2017-07-18 14:50:16

标签: 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. 为什么&#39; lang&#39;字段出现,即使我故意将语言检测字段设置为&#39; lang_detect&#39;?
  2. 既没有&#39; title_zh&#39;,&#39; title_en&#39;出现在结果中。步骤/配置错过了吗?
  3. 感谢。

1 个答案:

答案 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)。