Я установил одноядерный solr (4.6.0), и я пытаюсь индексировать документы на нескольких языках. Я сконфигурировал solr для автоматического определения языка документа, но всегда устанавливает язык по умолчанию (настроен в langid.fallback параметр).Solr не распознает язык автоматически
Это то, что я написал в solrconfig.xml, чтобы определить язык:
и
<updateRequestProcessorChain name="langid">
<processor class="org.apache.solr.update.processor.LangDetectLanguageIdentifierUpdateProcessorFactory">
<str name="langid.fl">text,title,description,content</str>
<str name="langid.langField">language_s</str>
<str name="langid.fallback">en</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
После загрузки документа, вот это то, что появляется в журнале:
248638 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – LangId configured
248639 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Language fallback to value en
248639 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Appending field text
248639 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Appending field title
248639 [qtp723484867-14] WARN org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Field title not a String value, not including in detection
248640 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Appending field description
248640 [qtp723484867-14] WARN org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Field description not a String value, not including in detection
248640 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Appending field content
248640 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – No input text to detect language from, returning empty list
248641 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – No language detected, using fallback en
248641 [qtp723484867-14] DEBUG org.apache.solr.update.processor.LanguageIdentifierUpdateProcessor – Detected main document language from fields [Ljava.lang.String;@6efbb783: en
С моей точки зрения, LanguageIdentifie rUpdateProcessor не может обработать solr.TextField поля для определения языка, но я не видел этого ограничения в любой документации. Кроме того, я видел несколько примеров в книгах, и оба они используют текстовые поля (а не строковые поля) для определения языка. И, я не знаю почему, но поля текст и содержание не принимаются во внимание.
Может ли кто-нибудь указать мне в правильном направлении?
Здесь есть определение поля этих полей:
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="content" type="text_general" indexed="false" stored="true" multiValued="true"/>
Спасибо!
Кроме того, я добавил цепочку обновлений в/update/extract, а также с конфигурацией updateRequestProcessorChain. Тем не менее он не работает. Есть ли что-то необходимое дополнительно. – Nitul