【问题标题】:solr group.field nullpointer exceptionsolr group.field 空指针异常
【发布时间】:2013-02-07 17:16:29
【问题描述】:

我在使用 solr 的组功能时遇到问题。我根本无法使用该功能。这是问题的描述。

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

field name="clusterid" type="string" indexed="true" stored="true" multiValued="false"

索引的“clusterid”字段具有有效值。

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

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

使用有效的 clusterid 产生一组很好的结果。

但是,当我尝试使用 clusterid 字段对结果进行分组时,我得到一个空指针异常。这是用于分组的网址

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

反应是

输入状态报告

消息 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) 在 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 文件仅对默认设置的内存设置(增加值)进行了更改。

当我尝试使用多值字段作为分组字段时,响应消息非常清楚“多值”字段不能用于分组。当我使用非字符串字段进行测试时,我再次收到那些不是字符串字段等的响应。

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

我是否遗漏了任何明显的内容(在架构或 solrconfig 文件中)?

【问题讨论】:

  • 我尝试在 Solr 3.6 中对搜索结果中某些文档中缺少的字符串字段进行分组,但仍然没有抛出 NPE。对于这些文档,它将 groupValue 设为 null,所以这很奇怪。
  • 为什么会调用 ClusteringComponent ???您是否正在触发聚类查询?

标签: solr nullpointerexception


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-07-12
    相关资源
    最近更新 更多