2011-06-21 20 views
1

私は現在Lucene 2.9で最新のLucene.NETを使用しています。私は一種の選択を実装しようとしていますが、どのグループにもドリルダウンする必要はありません。 Lucene 3.2にはこれを解決する方法がありますが、まだ2.9に移植する時間がありません。Lucene.NETでソートされたクエリの結果をフィルタリングする

並べ替え演算子を使用してページングされたクエリを実行すると、Luceneはクエリに一致するすべてのドキュメントを見つけ出してソートし、上位N個の結果(Nはページサイズ)を取得する必要があります。ソートされたクエリが完了した後にも適用されるものを構築したいが、上位N個のユニークな結果を返して返す。私は、一意性を判断するために、HashSetとインデックス付きフィールドの1つを使用することを考えています。私はむしろLuceneで何かを拡張する方法を見つけて、パフォーマンスの理由から結果が返されたら、これをやってみてください。

LuceneのドキュメントIDでソートしていない限り、メインのクエリが適用され、カスタムコレクタがソートされる前に実行される前にカスタムフィルタが実行されているように見えます。だから、この問題に対する最良のアプローチは何ですか?右のコンポーネントの方向のポイントはあなたにこの1つの答えを得るでしょう、実装の例は間違いなくあなたに答えを得るでしょう。事前

+0

あなたが「ユニーク」の結果とはどういう意味ですか基づいてサイズNのソートされたリストで結果を収集します? Luceneは、索引ですでにユニークである文書を返します。 – mathieu

+0

主キー/文書ID以外のフィールドに基づいて一意です。 select distinct *のように... ... SQLクエリ – LaserJesus

答えて

0

のおかげで私は、ソートせずに検索を行いたい、とカスタムコレクターで、「独自性」

+0

これは、Luceneで利用可能な最も効率的なインプリメンテーションです。上位Nを選択するために結果を表示するには、数百万個のアイテムを挿入する必要があります。 – LaserJesus

関連する問題