EdgeNGram:实例化类时出错:'org.apache.lucene.analysis.ngram.EdgeNGramFilterFactory'

2fa*_*nap 17 apache lucene solr

我已经设置了Solr,到目前为止所有的工作都只是花花公子,但现在我想在我的搜索中添加EdgeNGram功能.但是,只要我将它扔进我的schema.xml,它就会开始抛出错误:

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:
Could not load conf for core collection1: Plugin init failure for [schema.xml] 
fieldType "text_en_splitting": Plugin init failure for [schema.xml] analyzer/filter: 
Error instantiating class: 'org.apache.lucene.analysis.ngram.EdgeNGramFilterFactory'. 
Schema file is /opt/solr/server/solr/collection1/conf/schema.xml 
Run Code Online (Sandbox Code Playgroud)

相关的架构部分如下所示:

<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
Run Code Online (Sandbox Code Playgroud)

其他fieldType的配置很好,因为我已经相当广泛地测试了它.它只是添加这一行抛出错误.

现在,我已经做了一些环顾四周,通常情况下,这些错误意味着缺少一个.jar(至少根据这里发布的其他两个问题,特别是与NGram无关).所以我继续挖掘lucene-analyzers-common.jar并在我的solrconfig.xml中明确添加它,如下所示:

<lib dir="${solr.install.dir:../../../..}/dist/" regex="lucene-analyzers-common-\d.*\.jar" />
Run Code Online (Sandbox Code Playgroud)

没运气.我知道路径很好,我就是这样包含了mysql_connector.无论如何,我已经厌倦了这个错误,所以我继续前进并包括我可以挖掘的每一个.jar:

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-.*\.jar" />
Run Code Online (Sandbox Code Playgroud)

Nope.jpg

当然,所有这些都伴随着许多bin/solr stop -all并启动,所有这些仍然在Solr Admin中为我提供漂亮的红色横幅.我在Solr 5.0.0上

救命?

2fa*_*nap 24

嗯,这很尴尬,但这是发生在我身上的典型事情.我发布这个问题后不到5分钟,我就把错误消失了[注意我说"错误消失",我没有说"我解决了",因为我还没有完全测试它].

无论如何,在我的过滤器标签中,您会看到该side="front"标签?是的,显然是个坏主意.虽然这很奇怪,因为我发现在apache docs:https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.EdgeNGramFilterFactory中,我没有补上或其他什么.

有谁能解释一下?

  • 它在Solr 4.4中被标记为已弃用,并在5.0中被删除.所以它基本上是文档中的一个错误.请看这里:https://cwiki.apache.org/confluence/display/solr/Filter+Descriptions#FilterDescriptions-EdgeN-GramFilter (8认同)