2010-11-26 7 views
0

documentationによると、Zend Luceneは辞書編集で並べ替えが行われています。私はこれが当てはまらないことを発見しています。クエリ 'avg:[050 TO 300]'があれば、その範囲内のすべての値が返されますが、値ではなくドキュメントIDに従ってソートされます。Zend Luceneを使用した範囲クエリの並べ替え

find()関数は追加のパラメータを受け取り、特定の列(たとえば$hits = $index->find($query, 'avg', SORT_NUMERIC, SORT_ASC);)でソートできるようになりました。しかし、私は$クエリを動的に作成しており、すべての検索を '平均'でソートしたくありません。

範囲検索を行うときにLuceneに辞書的に自動的に結果を並べ替えるにはどうすればよいですか?それが不可能な場合は、ソートフィールドをfind関数に動的に追加するにはどうすればよいですか?

答えて

1

$index->find(...)から結果を得た後、自分で$hitsを並べ替えてみませんか?これは回避策のように見え、非常に大きな結果セットの場合は時間がかかるでしょうが、これはほとんどの場合、これが最も簡単な方法だと思います。

+0

私は選択された数のクエリをソートするだけなので、私はそのクエリを実行するたびにフラグを設定し、ソートなし/なしで見つけるif/elseを見つけることになります。 ($ query、 'avg'、SORT_NUMERIC、SORT_ASC);} else {$ hits = $ index->​​ find($ query);} ') –

関連する問題