我尝试使用Solr ComplexPhraseQueryParser在末尾启用带通配符的短语查询, 主要是为了让自动完成功能正常工作。
所以基本上是
的输入"how to t"
应该提出像
这样的建议"how to test the network performance"
"how to transfer data lorem ipsum"
"how to temporary lorem ipsum"
等等。
我正在使用Solr 4.8.1。
但是,当我执行以下查询
时select?q={!complexphrase}text_all_phrase:"how+to+te*"&wt=json&indent=true
无论是否
inorder= true
或
inorder=false
我一直收到错误null:org.apache.lucene.search.BooleanQuery $ TooManyClauses:maxClauseCount设置为1024(s。下面的完整堆栈) 所以我用Google搜索并发现我必须调高配置值
maxBooleanClauses
在solrconfig.xml中。 所以我将其设置为1024到4096.
现在奇怪的事情开始了: 无论我设置什么值,错误都会一直显示1024作为设定值,当然也会不断出现。
还有其他人有这个问题吗? 我是否设置了错误的配置值? 我还必须在其他地方定义它吗?我找到了一些关于Lucene配置值的东西但找不到它。
非常感谢任何帮助。 请不要给我任何提示如何以不同的方式解决自动完成问题,我们已经有突出显示,建议和方面,因为所有这些对我们的客户来说还不够,我们真的希望使用ComplexPhraseQueryParser。
非常感谢,
马库斯
EDIT 我刚看到我更改的值是在solrconfig.xml的查询部分。 那是对的吗?我是否必须为ComplexPhraseQueryParser定义一个自己的部分?
更多信息:
这是我试图从schema.xml搜索的字段:
<field name="text_all_phrase" type="text_std_token" indexed="true" stored="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true" />
这是我们为该字段设置的数据类型:
<fieldType name="text_std_token" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[\\.,!;?:\"]+" replacement="" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[\\.,!;?:\"]+" replacement="" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
这是错误的完整堆栈:
null:org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024
at org.apache.lucene.search.ScoringRewrite$1.checkMaxClauseCount(ScoringRewrite.java:72)
at org.apache.lucene.search.ScoringRewrite$ParallelArraysTermCollector.collect(ScoringRewrite.java:149)
at org.apache.lucene.search.TermCollectingRewrite.collectTerms(TermCollectingRewrite.java:79)
at org.apache.lucene.search.ScoringRewrite.rewrite(ScoringRewrite.java:105)
at org.apache.lucene.search.MultiTermQuery.rewrite(MultiTermQuery.java:288)
at org.apache.lucene.queryparser.complexPhrase.ComplexPhraseQueryParser$ComplexPhraseQuery.rewrite(ComplexPhraseQueryParser.java:275)
at org.apache.lucene.search.IndexSearcher.rewrite(IndexSearcher.java:636)
at org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:683)
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:297)
at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1609)
at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1397)
at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:478)
at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:461)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:218)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1952)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:774)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:418)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:610)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:0)
我找到了问题的原因,看起来它只是Solr版本4.8.1中的一个错误, 我升级到Solr 4.10.1,现在它至少接受我的配置值, 即使我还没有解决我的所有问题,至少问题已经消失了。