インデックスで順序付けされたフィールドがいくつかあります (例: lexographical String
s)。値が高いほど、ブースト/スコアを高くしたいと思います。
Lucene 4 でこれを行うための推奨される方法は何ですか? (IndexCache へのヒットによって正確な値を取得することは最適ではありません)
(以前のバージョンの Lucene には多くの Google ヒットがありますが、API は大幅に変更され、インデックス作成システムが大幅に改善されています。)
IndexSearcher.searchSort
への呼び出しにa を渡すことで、フィールド値を辞書式に並べ替えることができます。
SortField primarySort = new SortField("field", SortField.Type.STRING);
Sort sort = new Sort(primarySort, SortField.FIELD_SCORE);
searcher.search(query, hits, sort);
これは、最初に指定されたフィールドの辞書順で並べ替え、次に関連性スコアで並べ替えます。を作成するときに、好きなだけ並べ替えフィールドを追加できますSort
。