2013-02-07 26 views
0

我有问题使用solr的组特征。我根本无法使用该功能。这是对问题的描述。solr group.field nullpointer例外

我使用的组字段定义如下。

字段名=“群ID”类型=“字符串”索引=“真正的”存储=“真正的”多值=“假”

的索引“群ID”字段有效值。

最初,我尝试在上面的字段上使用Solrj客户端API使用“组”功能。我开始得到“HTTP状态500内部服务器错误...”假设参数的语法或顺序可能是一个问题,我决定使用Firefox浏览器测试相同的功能。

.../solr/select/?q=title%3Acomputer 

通过有效的clusterid(s)产生一组不错的结果。

但是,当我尝试使用clusterid字段对结果进行分组时,出现空指针异常。下面是用于分组

.../solr/select/?q=title%3Acomputer&group=true&group.field=clusterid 

URL和反应是在 org.apache.solr.handler

类型状态报告

消息空显示java.lang.NullPointerException。 clustering.ClusteringComponent.process(ClusteringComponent.java:89) 在 org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:186) 在 组织。 apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129) at 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.co re.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) 在 有机.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) at java.lang.Thread.run(Thread。java:662)

注意:我在Windows XP上使用solr版本3.6.2。 solrconfig文件只对内存设置进行更改(增加值)。

当我尝试使用多值字段作为组字段时,响应消息非常明确,“multiValued”字段不能用于分组。当我使用非字符串字段进行测试时,我又得到了那些不是字符串字段等的响应。

但是,当提供字符串类型的字段(clusterid或任何其他字符串类型的字段)时 - null指针异常被抛出。

我是否错过任何明显的内容(在模式或solrconfig文件中)?

+0

我试图在Solr 3.6分组中搜索结果中的某些文档中缺少的字符串字段,它仍然没有抛出NPE。它为这些文档提供'groupValue'作为null,所以这很奇怪。 – arun

+0

为什么调用ClusteringComponent?你在发射群集查询吗? – Jayendra

回答

0

我使用Solr 6.3面临同样的问题。看起来,集群组件(您显然使用的)无法从组响应中提取所需的数据。我发现唯一的解决方法是启用突出显示,然后群集似乎工作;但是这带来了显着的性能损失。但是,如果你的结果尺寸很小,它可能是你的选择;对于更大的结果(> 200-300个文档),集群似乎需要更多的时间而不是突出显示。我使用的是Lingo算法,也许使用STC会更好。