solr join - 返回父文档和子文档

时间:2012-08-17 23:07:10

标签: join solr

我正在使用Solr(4.0.0-beta)连接功能来查询具有父/子关系的文档的索引。连接查询效果很好,但我只在搜索结果中获取父文档。我相信这是预期的行为。

是否可以在搜索结果中返回父文档和子文档? (作为单独的搜索命中)。

例如:

父母:

SolrDocument{uid=m_1, media_id=1}<br/>
SolrDocument{uid=m_2, media_id=2}<br/>
SolrDocument{uid=m_3, media_id=3}

儿童:

SolrDocument(uid=p_1, page_id=1, fk_media_id=[1], partNumber=[abc, def, xyz]}<br/>
SolrDocument(uid=p_2, page_id=2, fk_media_id=[1,2], partNumber=[123, 456]}<br/>
SolrDocument(uid=p_3, page_id=3, fk_media_id=[1,3], partNumber=[100, 101]}

我通过partNumber查询:

{!join from=fk_media_id to=media_id}partNumber:abc

我按预期在结果中获取父文档(uid = m_1)。但在这种情况下,我希望在结果中返回父级和子级。这可能吗?

1 个答案:

答案 0 :(得分:1)

不,这不可能。根据Solr Wiki的说法:

  

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

http://wiki.apache.org/solr/Join

您必须对所有数据进行非规范化才能执行此操作或运行两个不同的查询。