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 Wikiによると:

SQL に慣れている人は、Solr の Join は実際には SQL Join と同等ではないことに注意することが重要です。これは、結合元のテーブルに関する情報が最終結果に引き継がれないためです。より適切な SQL の類推は、「内部クエリ」です。

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

それを行うには、すべてのデータを非正規化するか、2 つの異なるクエリを実行する必要があります。

于 2012-10-30T16:20:11.463 に答える