2017-11-17 10 views
5

solrは、インデックス付きフィールドのいくつかの分布に従って結果を得る方法はありますか?solr結果に応じた分布を得る

例えば、私はフィールド「概要」「PUBLICATION_YEAR」と「ジャンル」と、書籍のカタログを持っている想像してみてください。 最新の出版書籍を好む「概要」に従って最も関連性の高い結果を返すクエリを作成したいと考えています。しかし、最終結果(1000と言う)では、50%のSF、25%のノンフィクション、10%の政治など、特定の分布に従って可能な限りジャンルをできるだけ近くに配達したいと考えています。 。

私は、大きな結果セットを取得し、Solrの外で最終千冊を取得するために、加重貯留サンプリングのいくつかの並べ替えを行うことができます知っているが、私は唯一のSolrられる解決策を探しています。

これは可能ですか?もしあなたが問題に取り組む方法についてアドバイスがありますか?

答えて

0

ディストリビューションをプラグインすることはできませんが、Collapse and ExpandまたはResult Groupingを使用すると、各ジャンルごとにn個の結果が得られます。そのグループのしきい値を超えて返された結果は無視されます。

あなたは上記のあなたの例では、ヒット数の合計、すなわち500のディストリビューションで最大バケットサイズにグループごとにドキュメントの数を設定する必要があります。これはあなたに非常に大量の文書を扱うことができるので、返される総数をprに保とうとします。最初はジャンルがかなり小さい。

グループは、上記の二つの機能のいずれかを拡張し、ジャンルごとに収集ドキュメントの数を制限するための独自のコードを追加することで、よりダイナミックなサイズにするいくつかの方法があるかもしれません。

+0

返信いただきありがとうございます@matslindh!私は "結果グループ化"機能を使って、各ジャンルのトップNの結果を得て、solr以外の必要な数字に応じてそれらをフィルタリングすることを考えました。あなたが言及したように、結果の数は潜在的に高く、私はこのアプローチのパフォーマンスについて少し心配しています。提案したソリューションでは、「折りたたみと展開」機能はどのように機能しますか? – lucacerone

関連する問題