Java 如何使用NoSuchMethodError:EdgeNGramTokenFilter解决问题

Java 如何使用NoSuchMethodError:EdgeNGramTokenFilter解决问题,java,solr,lucene,Java,Solr,Lucene,现在,我的schma.xml配置是: <fieldType name="text_exact_fuzzy" class="solr.TextField" omitNorms="false"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.EdgeNGramFilt

现在,我的schma.xml配置是:

<fieldType name="text_exact_fuzzy" class="solr.TextField" omitNorms="false">
     <analyzer type="index">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="7"/>
          <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="7"/>
        <filter class="solr.LowerCaseFilterFactory"/>      
     </analyzer>
</fieldType>

但现在我在向solr添加数据时遇到了这样的问题, 我使用solr.StandardTokenizerFactory定义了fieldType的分析器,没有任何问题,但是当使用solr.EdgeNGramFilterFactory的分析器可以得到这样的错误时。 我已经导入了jar,比如lucene-analyzers-common-4.5.0.jar、lucene-analyzers-3.5.0.jar等等。 我认为lucene-analyzers-common-4.5.0.jar包含了EdgeNGramFilterFactory类

java.lang.NoSuchMethodError: org.apache.lucene.analysis.ngram.EdgeNGramTokenFilter.<init>(Lorg/apache/lucene/util/Version;Lorg/apache/lucene/analysis/TokenStream;Ljava/lang/String;II)V
        at org.apache.lucene.analysis.ngram.EdgeNGramFilterFactory.create(EdgeNGramFilterFactory.java:52)
        at org.apache.lucene.analysis.ngram.EdgeNGramFilterFactory.create(EdgeNGramFilterFactory.java:34)
        at org.apache.solr.analysis.TokenizerChain.createComponents(TokenizerChain.java:67)
        at org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:102)
        at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:180)
        at org.apache.lucene.document.Field.tokenStream(Field.java:552)
        at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:95)
        at org.apache.lucene.index.DocFieldProcessor.processDocument(DocFieldProcessor.java:248)
        at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:254)
        at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:446)
        at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1521)
        at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:217)
        at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
        at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
        at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:556)
        at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:692)
        at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:435)
        at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100)
        at org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:247)
        at org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:174)
        at org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92)
        at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1859)
        at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:150)
        at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:117)
        at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:68)
        at org.apache.solr.client.solrj.SolrServer.addBeans(SolrServer.java:93)
        at org.apache.solr.client.solrj.SolrServer.addBeans(SolrServer.java:77)

Please help me, thanks a lot!
java.lang.NoSuchMethodError:org.apache.lucene.analysis.ngram.edgengramtokefilter(Lorg/apache/lucene/util/Version;Lorg/apache/lucene/analysis/TokenStream;Ljava/lang/String;II)V
位于org.apache.lucene.analysis.ngram.EdgeNGramFilterFactory.create(EdgeNGramFilterFactory.java:52)
位于org.apache.lucene.analysis.ngram.EdgeNGramFilterFactory.create(EdgeNGramFilterFactory.java:34)
位于org.apache.solr.analysis.TokenizerChain.createComponents(TokenizerChain.java:67)
位于org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:102)
位于org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:180)
位于org.apache.lucene.document.Field.tokenStream(Field.java:552)
位于org.apache.lucene.index.docinverterfield.processFields(docinverterfield.java:95)
位于org.apache.lucene.index.DocFieldProcessor.processDocument(DocFieldProcessor.java:248)
位于org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:254)
位于org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:446)
位于org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1521)
在org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:217)
位于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.doLocalAdd(DistributedUpdateProcessor.java:556)
位于org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:692)
在org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd上(DistributedUpdateProcessor.java:435)
在org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100)上
位于org.apache.solr.handler.loader.xmloader.processUpdate(xmloader.java:247)
位于org.apache.solr.handler.loader.xmloader.load(xmloader.java:174)
位于org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92)
位于org.apache.solr.handler.ContentStreamHandlerBase.HandlerRequestBody(ContentStreamHandlerBase.java:74)
位于org.apache.solr.handler.RequestHandlerBase.HandlerRequest(RequestHandlerBase.java:135)
位于org.apache.solr.core.SolrCore.execute(SolrCore.java:1859)
在org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:150)上
位于org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:117)
位于org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:68)
位于org.apache.solr.client.solrj.SolrServer.addBeans(SolrServer.java:93)
位于org.apache.solr.client.solrj.SolrServer.addBeans(SolrServer.java:77)
请帮帮我,非常感谢!

您需要添加apache-lucene-analyzers.jar,您可以从

我应该在哪个地方添加apache-lucene-analyzers.jar,事实上,我已经添加了lucene-analyzers-common-4.5.0.jar、lucene-analyzers-3.5.0.jar等。缺少的类在这个jar中,添加它的方式与添加其他jar的方式相同。还有错误,我猜lucene的版本可能不匹配。lucene-analyzers-3.5.0.jar,用更新的版本替换这个jar,并尝试一下。事实上,我使用lucene-analyzers-common-4.5.0.jar和lucene-core-4.5.0.jar