Когда я добавляю документ с украинским в индекс Solr, я получаю следующую ошибку времени выполнения от Solr
java.lang.RuntimeException: java.lang.NoClassDefFoundError: morfologik / stemming / IStemmer atorg.apache.solr.servlet.HttpSolrCall.sendError (HttpSolrCall.java:593) в org.apache.solr.servlet.HttpSolrCall.call (HttpSolrCall.java:465) в org.apache.solr.servlet.ilterSolterSolrDispatchFilter.java:227) в org.apache.solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:196) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilserv.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:585) в org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:143) в org.eclipse.jetty.security.andleHeh Security.java: 577) в org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:223) в org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1127) в org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:515) в org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:18lseg или в).jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1061) в org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:141) в org.eclipse.jetty.server.Handler.Context.handle (ContextHandlerCollection.java:215) в org.eclipse.jetty.server.handler.HandlerCollection.handle (HandlerCollection.java:110) в org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.j) в org.eclipse.jetty.server.Server.handle (Server.java:497) в org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:310) в org.eclipse.jetty.server.HttpConnection. onFillable (HttpConnection.java:257) в org.eclipse.jetty.io.AbstractConnection $ 2.run (AbstractConnection.java:540) в org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPol) 35org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run (QueuedThreadPool.java:555) в java.lang.Thread.run (Thread.java:745) Причина: java.lang.NoClassDefFoundError: morfologik / stemming / IStemmer at.apache.lucene.analysis.morfologik. Морфологический фильтр(AnalyzerWrapper.java:101) в org.apache.lucene.analysis.AnalyzerWrapper.createComponents (AnalyzerWrapper.java:101) в org.apache.lucene.analysis.Analyzer.tokenStream (Analyzer.java:179) в org.ap. lucene.document.Field.tokenStream (Field.java:564) в org.apache.lucene.index.DefaultIndexingChain $ PerField.invert (DefaultIndexingChain.java:606) в org.apache.lucene.index.DefaultIndexingChainJava: 344) в org.apache.lucene.index.DefaultIndexingChain.processDocument (DefaultIndexingChain.java:300) в org.apache.lucene.index.DocumentsWriterPerThread.updateDocument (DocumentsWriterPerThread.java:232) по адресу org.apache.lucene.index.DocumentsWriter.updateDocument (DocumentsWriter.java:458) по адресу org.apache.lucene.index.IndexWriter.jd: orD.WDate.apache.solr.update.DirectUpdateHandler2.addDoc0 (DirectUpdateHandler2.java:239) при org.apache.solr.update.DirectUpdateHandler2.addDoc (DirectUpdateHandler2.java:163) при org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69) в org.apache.solr.update.processor.UpdateRequestProcessor.processAdd (UpdateRequestProcessor.java:51) в org.apache.solr.update.processor.DistributedUpdateProcessor.doProor.jpg ()org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd (DistributedUpdateProcessor.java:1110) в org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd (DistributedUpdateProcessor.sol.at. processor.LogUpdateProcessor.processAdd (LogUpdateProcessorFactory.java:104) в org.apache.solr.handler.loader.XMLLoader.processUpdate (XMLLoader.java:250) в org.apache.solr.handler.loader.XMLLoader. Java: 177) в org.apache.solr.handler.UpdateRequestHandler $ 1.load (UpdateRequestHandler.java:98) в org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody (ContentStreamHandlerBase.java:74) в org.apache.sol. handler.RequestHandlerBase.handleRequest (RequestHandlerBase.java:143) в org.apache.solr.core.SolrCore.execute (SolrCore.java:2064) в org.apache.solr.servlet.HttpSolrCall.execute (HttpSava) 4at org.apache.solr.servlet.HttpSolrCall.call (HttpSolrCall.java:450) ... еще 22 причины: java.lang.ClassNotFoundException: morfologik.stemming.IStemmer в java.net.URLClassLoader $ 1.run (URLClassLoader.java:366) в java.net.URLClassLoader $ 1.run (URLClassLoader.java:355) в java.security.AccessController.doPrivileged (собственный)) в java.net.URLClassLoader.findClass (URLClassLoader.java:354) в java.lang.ClassLoader.loadClass (ClassLoader.java:425) в java.net.FactoryURLClassLoader.loadClass (URLClassLoader.java:793) в Java. .ClassLoader.loadClass (ClassLoader.java:358) ... еще 50
Я использую такой код (в 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" />
Я проверил, что путь правильный.