3

我正在使用 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)。但在这种情况下,我希望在结果中返回父母和孩子。那可能吗?

4

1 回答 1

1

不,这不可能。根据 Solr 维基:

对于习惯使用 SQL 的人来说,重要的是要注意 Solr 中的 Join 并不真正等同于 SQL Join,因为没有关于“从”连接的表的信息被传递到最终结果中。更合适的 SQL 类比是“内部查询”

http://wiki.apache.org/solr/加入

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

于 2012-10-30T16:20:11.463 回答