3

我使用 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>

现在我想查询所有创建帖子的用户,我使用加入功能,我的网址是这样的:

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)
      .
      .
      .

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

4

1 回答 1

1

fq参数需要使用!join.

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

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

于 2014-06-03T17:04:24.323 回答