1

検索する前に結果セットをフィルタリングしたい。これを行う正しい方法は、フィルタークエリ(fq)パラメーターを使用することです。ただし、フィールドで実行された関数の出力に基づいてフィルタリングしたいと思います。

1から〜75000の範囲の整数である「rating」フィールドがあります。上限は変更になる場合があります。「評価」が最も高い上位500項目にフィルターをかけたい。SQLでは、これは次のようになります。

... ORDER BY rating DESC LIMIT 500

関数rord(rating)を使用して、評価の降順でランク付けされたsolrのドキュメントを取得できると思うので、基本的には次のようにします。

fq=rord(rating):[0 TO 500]

しかし、それは不可能のようです。誰かが私が他に何ができるか知っていますか?

4

3 に答える 3

3

SolrメーリングリストのYonikSeeleyに感謝します。

Solr 1.4は、任意の関数に対して範囲クエリを実行できるようになりました:http: //lucene.apache.org/solr/api/org/apache/solr/search/FunctionRangeQParserPlugin.html

ord()とrord()はSolr1.4トランクでは正しく機能しないことに注意してください。LuceneはMultiReaderでセグメントごとの検索に変更されたため、現在、インデックス全体ではなく、そのセグメントでord()またはrord()を取得します。

于 2009-04-21T08:00:36.043 に答える
1

solr-userメーリングリストにクロスポストされ、Yonikが回答しました。

于 2009-04-20T22:50:59.517 に答える
1

何かが足りない場合を除いて、評価フィールドで並べ替えてから最初の500を取得することはできません。これはSQLの例と同じです。

于 2009-04-20T21:17:49.130 に答える