2010-12-07 9 views
6

"製品ドキュメント"を検索しています。言い換えれば、私のsolrドキュメントは製品レコードです。私は質問のための一致するトップ50の製品を言うことを望みます。次に、名前や価格でトップ50のスコアリング文書を並べ替えることができるようにしたいと考えています。私はスコアを並べ替えることができないので、スコアを浮動小数点にするので、名前や価格では本当に助けにならないので、これを行う方法についてはあまり見ていない。solrクエリでソートする前にスコアで制限する方法

範囲にスコアをマッピングするようなことができればいいです(スコアは8.0-8.99のように8バケットスコアになります)。次に範囲ごとにソートしてから名前を付けます基本的にスコアリングの正規化はありませんが、これはやはりもっと難しくなります。

Tl; drソート結果セットから低スコアのドキュメントを除外するにはどうすればよいですか?

答えて

3

あなたはスコアでソートしたくないかぎり、これを達成するためにfrangeを使用することができます(その場合、私はあなたを推測クライアント側でフィルタリングを行うだけで済みます)。

あなたのクエリはの線に沿って何かだろう

:下のあなたがスコアをフィルタリングするバインドされ、そしてあなたとのQQのパラメータを置き換えるために、Q-FRANGEパラメータでL引数を設定し

q={!frange l=5}query($qq)&qq=[awesome product]&sort=price asc 

ユーザクエリ。

+0

おかげさまで、結果はスコアだけで並べ替えて表示されるようになりましたが、これは素晴らしいことです。 – Zak

0

私はあなたが単に

は、関連性スコアは、検索クエリの所定の組み合わせのためにのみ意味がありますので

をソートする前に設定 Solrの結果から、低スコアのドキュメントを除外することができるとは思いません結果として得られる文書リスト。私。スコアは特定の検索内でのみ意味があり、すべての検索にいくつかのしきい値を設定することはできません。

Java(またはPHP)を使用している場合、上位50のドキュメントを取得してから、このリストをプログラミング言語で並べ替えることができますが、SOLRだけではできないと思います。

とにかく、単にユーザーを混乱させるので、SOLRからの結果を再ソートするこのルートを使用しないことをお勧めします。人々は、検索結果が何らかの形のTFIDFランキングに戻ってくるGoogle(と他のほとんどの検索エンジン)のように検索結果を期待しています。

これは、価格範囲のスケールに基づいてindex-time boostの要素を追加することによって、他の基準を使用して同じ関連性スコアでドキュメントを区切ることができるということです。

私はSOLRの強みとファセットを使用することをお勧めします。左に価格帯ファセット(Ebay、Amazonなど)および/または商品カテゴリファセットなどを提供します。また、ユーザーが望む場合は、結果を商品名で並べ替えるための「ソート」ウィジェットを提供しますそれ。

[EDIT]この質問も有用であるかもしれない:

Digg-like search result ranking with Lucene/Solr?

0

カール・ヨハンソン(Karl Johansson)が観察したように、クライアントサイドでフィルタリングを行うことができます。レスポンスの最初の50行を読み込み(score descでソート)、JSなどで操作します。

jQuery DataTables pluginは、並べ替え、複数の列の並べ替え、動的フィルタリングなどの作業に非常に適しています。また、50行では非常に高速になり、ユーザーはソート彼らが望むものが見つかるまでフィルタリングします。

関連する問題