我使用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)
.
.
.
我不知道为什么,你能帮助我吗?
答案 0 :(得分:1)
fq
参数需要!join
的有效查询。
尝试将所有搜索添加到fq param的末尾,就像这样。 http://localhost:9080/solr/user/select?q=*:*&fq={!join from=creatorId to=id fromIndex=post}*:*
在实际设置中,您可能希望以某种方式过滤联接的结果,例如,“找到过去两周内此用户评分的所有动作电影”,其中电影和用户评分存储为单独的文件。