当我将一个带有乌克兰语的文档添加到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" />
我已经检查过路径是否正确。
在较新版本的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