提问者:小点点

使用乌克兰语进行索引时出现solr运行时异常


当我将一个带有乌克兰语的文档添加到Solr索引时,我从Solr得到以下运行时错误

我使用这样的代码(在PHP中)来添加文档

<?php
    $solrInputDocument = new SolrInputDocument();
    $solrInputDocument->addField('id', 'iscar-hk uk 1 1', 1);
    $solrInputDocument->addField('product_id_i', '1', 1);
    $solrInputDocument->addField('type_i', 1, 1);
    $solrInputDocument->addField('lang_code_s', 'uk', 1);
    $solrInputDocument->addField('system_instance_s', 'iscar-hk', 1);
    $solrInputDocument->addField('hello_tuk', 'abc', 1);
    $docs = array($solrInputDocument);
    $solrClient->getSolrClient()->addDocuments($docs);

我在我的模式中使用以下内容来定义乌克兰字段:

<dynamicField name="*_tuk"  type="text_uk"    indexed="true"  stored="true" />
<fieldType name="text_uk" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" words="lang/stopwords_uk.txt"/>
        <filter class="solr.MorfologikFilterFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldType>

在solrconfig.xml中,我指定了mofologik分析器的路径。

  <lib dir="/opt/solr/contrib/analysis-extras/lucene-libs" regex="lucene-analyzers-morfologik-5\.2\.1\.jar" />

我已经检查过路径是否正确。


共1个答案

匿名用户

在较新版本的Solr中,您需要在solrconfig. xml中手动请求以包含MorfologikFilterFactory存储的路径(通常为$SOLR_HOME/contrib/analyment-extas/lib/)。

您可能需要将以下两行(或类似行)添加到 solrconfig 中.xml并重新加载内核。

<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" regex=".*\.jar" />

另见https://lucene.apache.org/solr/guide/7_0/language-analysis.html#ukrainian