当前位置: 首页 > 知识库问答 >
问题:

使用或与导致NullPointerException的联接查询结果一起使用

阎卓
2023-03-14

以下是在我的Solr4.7.2中配置的示例文档和字段

brands {id, brand_name}
products {id, product_name, brand_id}

以下是索引的数据

BRANDS: {1, Apple}, {2, Samsung}, {3, HTC}

PRODUCTS: {10, iPhone, 1}, {11, iPad, 1}, {12, Galaxy S3, 2}, {13, Galaxy Note, 2}, {14, Desire, 3}
brand_name:Samsung OR {!join from=brand_id to=id} product_name:Desire
ERROR [SolrDispatchFilter] null:java.lang.NullPointerException: while trying to invoke the method org.apache.lucene.search.Query.hashCode() of a null object loaded from field org.apache.solr.search.JoinQuery.q of an object loaded from local variable 'this'
        at org.apache.solr.search.JoinQuery.hashCode(JoinQParserPlugin.java:594)
        at org.apache.lucene.search.BooleanClause.hashCode(BooleanClause.java:99)
        at java.util.AbstractList.hashCode(AbstractList.java:541)
        at org.apache.lucene.search.BooleanQuery.hashCode(BooleanQuery.java:520)
        at org.apache.solr.search.QueryResultKey.<init>(QueryResultKey.java:47)
        at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1305)
        at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:476)
        at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:461)
        at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:217)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1916)
        at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:768)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:415)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:205)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:812)

(field1:value1或field2:value2或field3:value3或{!join from=some_id TO=some_other_id}field4:value4或{!join from=some_field_is TO=some_other_field_id}field5:value5)和field7:value7和datefield1:{*TO 2015-11-30t14:28:11z}和datefield2:{2015-11-30t14:28:11z TO*}

请建议是否有其他方法可以做到这一点。

共有1个答案

萧永长
2023-03-14

这可以使用查询参数来完成。

(brand_name:Samsung OR {!join from=brand_id to=id v=$subquery})
&subquery=product_name:Desire
 类似资料:
  • 问题内容: 当需要有序集的最后一行时,通常会创建派生表并重新排序。例如,要以自动递增的方式返回表的最后3个元素: 由于也可以具有偏移量,因此如果我们事先知道此查询的行数(例如10),则可以实现相同的结果: 是否可以对表运行子查询并使用该数字动态构建一个? 问题答案: 不,不可能指定动态偏移量。 带有子查询的原始查询是执行此操作的最简单方法。

  • 问题内容: 我有这两张表 每天,无论交易/记录的数量如何,每个uid都将接收入和出的余额值 我想做的就是结合查询结果像这样 但是,当我执行此查询时 它产生无效的结果(SUM是两倍或三倍),我应该如何修改查询以使其不会产生两倍的结果? 问题答案: 首先建立总和,然后加入。像这样: 您拥有的方式,每一个都会与每个匹配项结合在一起,从而使数字相乘。您必须先进行汇总,然后再将 一个 总和与 一个 总和结合

  • 问题内容: 我正在使用cProfile来分析我的Python程序。基于这次演讲,我给人的印象是KCacheGrind可以解析并显示cProfile的输出。 但是,当我要导入文件时,KCacheGrind只会在状态栏中显示“未知文件格式”错误,而坐在那里什么也不显示。 在我的分析统计信息与KCacheGrind兼容之前,我需要做些特别的事情吗? 套件版本 KCacheGrind 4.3.1 的Pyt

  • 问题内容: 我已经看到了许多有关在Sql查询中使用参数和“赞”的问题,但是我尝试了各种方法来对其进行编码,但仍然无法使我的查询给出结果。如果我在查询本身中输入一个值,它会很好地运行。当我运行列出的第一个查询时,出现错误“必须声明标量变量“ @Search”,但我认为我使用cmd.Parameters.AddWithValue语句做到了。有人可以看到我可能在做错什么吗?感谢您的任何帮助。 问题答案:

  • 问题内容: 我想使用中的多个表中的数据。我有两种从服务器下载数据的想法,一种方法是使用联接和检索数据,一种方法是分别下载数据帧并使用pandas.merge合并它们。 当我想将数据下载到。 熊猫合并 哪一个更快?假设我要对2个以上的表和2个列执行此操作。有什么更好的主意吗?如果有必要知道我使用。 问题答案: 前者比后者快。前者仅需对数据库进行一次调用,并返回已加入并已过滤的结果。但是,后者对数据库

  • 问题内容: 对于开发人员何时使用联接而不是子查询是否有经验法则还是相同的? 问题答案: 取决于RDBMS。您应该比较两个查询的执行计划。 根据我对Oracle 10和11的经验,执行计划始终是相同的。