SOLR - 我可以获得相同结果的父字段和子字段吗?

时间:2013-12-29 14:46:22

标签: join solr

我正在使用SOLR 4.6和父文件和子文件。 我知道我可以使用'join'或'block join'来查找特定类型的文档(Child或Parent),

但是,我可以在同一回复中获得父文档字段和子文档字段吗?

例如: 如果我 firstName = Bob LastName = Marley 和儿童文档地址城市=纽约

我想在结果文档中获得 firstName = Bob LastName = Marley City = NY

4 个答案:

答案 0 :(得分:1)

根据Solr文档,这是不可能的。 http://wiki.apache.org/solr/Join

“对于习惯于SQL的人来说,重要的是要注意Solr中的Joins并不等同于SQL Joins,因为没有关于正在加入的表的信息被转发到最终结果中。更合适的SQL类比将是一个“内部查询”。

此Solr请求......

/ solr / collection1 / select? fl = xxx,yyy& q = {!join from = inner_id to = outer_id} zzz:vvv 与此SQL语句相当......

SELECT xxx,yyy FROM collection1 WHERE outer_id IN(SELECT inner_id FROM collection1,其中zzz =“vvv”)

答案 1 :(得分:1)

实际上这仍然是不可能的但是。有一个补丁可以找到here - SOLR-5285

答案 2 :(得分:1)

尝试索引时间使用父子关系阻止连接,并在查询中使用展开组件(Solr 4.8)。有关详细信息,请查看Joel的帖子@ http://heliosearch.org/expand-block-join/

答案 3 :(得分:0)

可以使用expand属性检索子文档,如expand block join中所述。如果我们添加

expand=true&expand.q=*:*&expand.field=_root_

查询。我们应该能够在“扩展”属性中获取所有子文档。