solr 4.0 には結合機能があることに気付きました。これを使用してサブドキュメントを結合したいと考えています。
何かのようなもの
<book>
<bookid>1</bookid>
<Title>This book is epic</title>
</book>
<page>
<bookid>1</bookid>
<number>1</number>
<pagecontent>this is the first page of the epic book</pagecontent>
</page>
<page>
<bookid>1</bookid>
<number>2</number>
<pagecontent>this is the second page of the epic book</pagecontent>
</page>
これらのサブドキュメントを結合するにはどうすればよいですか?
これを次のようにクエリしたいと思いますq=text:second .
Where text is a copyfield with it in it.
結果は、2 ページ目とその本になります。ブックとページよりも複雑なスキーマがあります。親 id:book を持つ他の種類のサブドキュメントもあります。
Solr 3.6 では、これらすべてのサブドキュメントを複数値フィールドとして格納し、連結フィールドとの組み合わせが存在するかどうかを確認します。これは良い方法ではなく、大量のコーディングが必要です + Java の Strings.contains に依存しています。Solr 4.0の参加が私を助けてくれることを願っています。しかし、正しいクエリを作成する方法と、ページのリストを含む本のような結果を取得する方法がわかりません。
サブドキュメントの種類ごとに複数のインデックスを使用することについても読んだことがありますが、これがドキュメントのスコアリングなどにどのように影響するかはわかりません.
編集:
ここでは、内部クエリの結果のみを最終結果に入れると言います。ID を変更して 2 つのクエリを実行し、結果を結合する必要がありますか? これも気持ち悪い…。