solr join函数查询多核NullPointerException中的文档

时间:2013-10-20 05:28:27

标签: solr lucene

我使用solr join从两个核心查询文档,我的核心定义如下: 发表核心:

        <fields>   
      <!-- general -->
    <field name="id"type="string"indexed="true"stored="true" multiValued="false" required="true"/>

    <field name="creatorId"type="string"indexed="true"stored="true"multiValued="false" required="true"/>
    .
    .
    .

</fields>

用户核心:

 <fields>   
  <!-- general -->
  <field name="id"        type="string"    indexed="true"  stored="true"  multiValued="false" required="true"/>
  <field name="username"      type="string"    indexed="true"  stored="true"  multiValued="false" /> 
  <field name="email"      type="string"    indexed="true"  stored="true"  multiValued="false" /> 
  <field name="userBrief"      type="string"    indexed="true"  stored="true"  multiValued="false" /> 
  <field name="jobNumber"      type="string"    indexed="true"  stored="true"  multiValued="false" />   
</fields>

现在我想查询已创建帖子的所有用户,我使用了join函数,我的url是这样的:

http://localhost:9080/solr/user/select?q=*:*&fq={!join from=creatorId to=id fromIndex=post}

但它不起作用,它会引发异常:

null: java.lang.NullPointerException
      at org.apache.lucene.search.IndexSearcher.rewrite(IndexSearcher.java:559)
      at org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:646)
      at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:280)
      .
      .
      .

我不知道为什么,你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

fq参数需要!join的有效查询。

尝试将所有搜索添加到fq param的末尾,就像这样。 http://localhost:9080/solr/user/select?q=*:*&fq={!join from=creatorId to=id fromIndex=post}*:*

在实际设置中,您可能希望以某种方式过滤联接的结果,例如,“找到过去两周内此用户评分的所有动作电影”,其中电影和用户评分存储为单独的文件。