子ドキュメント内での検索時の遅さ
(The bot translated the original post https://lists.apache.org/thread/7oc43wpkcgsh2wqwdq52bkvcqszd9bcg into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
私たちは子ドキュメント内での検索時にパフォーマンスの問題に直面しています。この問題を説明するために、データモデルの非常に簡略化した抜粋を提供します。
私たちは図書館向けの検索エンジンを作成しています。ユーザーに提供したいのは「作品」です。作品の例としては、「ハリー・ポッターと炎のゴブレット」があります。各作品には複数の「形態」がある可能性があります。例えば、作品には書籍版、オーディオブック、場合によっては電子書籍が存在します。もちろん、作品レベルにはプロパティ(作成者、タイトル、主題など)があり、形態レベルには他のプロパティ(出版年、資料の種類など)があります。
これを親ドキュメントと子ドキュメントでモデル化し、それに基づいて検索エンジンを構築しました。この検索エンジンは、作品レベルでの作成者、タイトル、主題などの検索が可能ですが、ユーザーは特定の年のものや電子書籍として利用可能なものだけを検索することもできます。
Solrには約2800万の作品と4100万の形態があり、形態は子ドキュメントとしてインデックスされています(多くの作品には1つの形態しかありません)。
ユーザーが作品レベルで検索する限り、パフォーマンスは問題ありません。しかし、ユーザーが形態レベルで検索すると、パフォーマンスが悪化します。例えば、作成者で検索すると、検索は200ミリ秒未満で実行され、30件程度のヒットが得られます。もし資料の種類でクエリを追加すると({!parent which:'doc_type:work'}materialType:"book"
のような構文)、検索には数秒かかります。この場合、フィルタリングをランキングの一部として扱いたいので、フィルタクエリに入れることは問題になります。
まず作品レベルでの検索を評価し、その後で子要件に一致する形態のフィルタリングを行う方法があるかどうかを考えています。作品レベルのプロパティでの検索を先に行い、IDのみを取得してから、形態レベルの要件に基づいたフル検索とIDでのフィルタクエリを追加する方法を試すことができますが、他により良い方法があるかどうか気になります。
よろしくお願いします、
/Noah
トピックへ返信するには、ログインが必要です。