使用solr的组功能时遇到问题。我根本无法使用该功能。以下是问题的描述。
我使用的组字段定义如下。
字段名称=" clusterid"类型="串"索引=#&34;真"存储="真"多值="假"
索引的" clusterid"字段具有有效值。
最初,我尝试使用" group"在上面的字段中使用Solrj客户端API的功能。我开始得到" HTTP状态500内部服务器错误......"假设参数的语法或顺序可能是个问题,我决定使用firefox浏览器测试相同的功能。
.../solr/select/?q=title%3Acomputer
使用有效的clusterid生成一组很好的结果。
但是,当我尝试使用clusterid字段对结果进行分组时,我得到一个空指针异常。这是用于分组的网址
.../solr/select/?q=title%3Acomputer&group=true&group.field=clusterid
,回复是
输入状态报告
message null java.lang.NullPointerException at org.apache.solr.handler.clustering.ClusteringComponent.process(ClusteringComponent.java:89) 在 org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:186) 在 org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129) 在org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365) 在 org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 在 org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588) 在 org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489) 在java.lang.Thread.run(Thread.java:662)
注意:我在Windows XP上使用solr版本3.6.2。 solrconfig文件仅对默认值的内存设置(增加值)进行了更改。
当我尝试将多值字段用作组字段时,响应消息非常清楚" multiValued"字段不能用于分组。当我使用非字符串字段进行测试时,我又得到了那些不是字符串字段等的响应。
但是当提供字符串类型的字段(clusterid或任何其他字符串类型的字段)时 - 抛出了空指针异常。
我是否遗漏任何明显的内容(在架构或solrconfig文件中)?
答案 0 :(得分:0)
我使用Solr 6.3面临同样的问题。看来聚类组件(您显然使用它)无法从组响应中提取所需的数据。我找到的唯一解决方法是启用突出显示,然后群集似乎工作;但这会带来显着的性能损失。但是,如果您的结果大小很小,它可能是您的选择;对于较大的结果(> 200-300个文档),聚类似乎比突出显示花费更多时间。我正在使用Lingo算法,也许使用STC会更好。