我正在使用SOLR 4.6和父文件和子文件。 我知道我可以使用'join'或'block join'来查找特定类型的文档(Child或Parent),
但是,我可以在同一回复中获得父文档字段和子文档字段吗?
例如: 如果我人 firstName = Bob 且 LastName = Marley 和儿童文档地址,城市=纽约
我想在结果文档中获得 firstName = Bob , LastName = Marley 和 City = NY 。
答案 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_
查询。我们应该能够在“扩展”属性中获取所有子文档。