Solr:complexprasequeryparser忽略solrconfig.xml中的MaxBooleanClances值
我尝试使用Solr ComplexPhraseQueryParser来启用最后带有通配符的短语查询, 主要是为了让自动完成功能正常工作 所以基本上是一个Solr:complexprasequeryparser忽略solrconfig.xml中的MaxBooleanClances值,solr,solr4,Solr,Solr4,我尝试使用Solr ComplexPhraseQueryParser来启用最后带有通配符的短语查询, 主要是为了让自动完成功能正常工作 所以基本上是一个 "how to t" 你应该提出类似的建议 "how to test the network performance" "how to transfer data lorem ipsum" "how to temporary lorem ipsum" 等等 我使用的是Solr4.8.1 但是,当我执行以下查询时 select?q={!com
"how to t"
你应该提出类似的建议
"how to test the network performance"
"how to transfer data lorem ipsum"
"how to temporary lorem ipsum"
等等
我使用的是Solr4.8.1
但是,当我执行以下查询时
select?q={!complexphrase}text_all_phrase:"how+to+te*"&wt=json&indent=true
不管
inorder= true
或
我不断得到错误null:org.apache.lucene.search.BooleanQuery$TooManyClauses:maxClauseCount设置为1024(下面是完整堆栈)
所以我在谷歌上搜索,发现我必须打开配置值
maxBooleanClauses
在solrconfig.xml中。
所以我把它从1024调成4096
现在奇怪的事情开始了:
不管我设置了什么值,错误总是显示1024作为设置值,当然也会不断发生
还有其他人有这个问题吗?
我是否设置了错误的配置值?
我是否也需要在其他地方定义它?我找到了一些关于Lucene配置值的信息,但找不到
非常感谢您的帮助。
请不要给我任何提示如何以不同的方式解决自动补全问题,我们已经有了突出显示、建议和方面,因为所有这些对于我们的客户来说都是不够的,所以我们真的希望使用CompleXPraseQueryParser
非常感谢
马库斯
编辑
我刚刚看到我更改的值位于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" />
我找到了问题的原因,似乎只是Solr版本4.8.1中的一个bug, 我升级到Solr 4.10.1,现在它至少接受我的配置值, 虽然我还没有解决所有的问题,但至少问题已经解决了
<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)