2011-01-31 11 views
1

は、スタッド_ロール_番号と日付_フィールドを持つと言っています。Luceneフィールドのグループ化

select stud_roll_number、count(*)from some_table date_leave> some_date by stud_roll_number; I>はdate_leaveを照会した後ためsome_date

試みのLuceneを使用して、同じクエリを作成する方法

...(ScoreDocのscoreDoc:topDocs.scoreDocs)を{

Document doc = search.doc(scoreDoc.doc); 

String value = doc.get(fieldName); 

Integer key = mapGrouper.get(value); 

if (key == null) { 
    key = 1; 
} else { 
    key = key+1; 
} 

mapGrouper.put(value, key); 

}

しかし、私は巨大なデータセットを持っているので、これを計算するのに時間がかかります。それを見つけるための他の方法はありますか?ありがとうございます。

答えて

0

パフォーマンスのボトルネックは、ドキュメントとフィールド値の検索を実行するために必要なI/Oです。この状況で何をしたいのかは、グループ化するフィールドにFieldCacheを使用することです。フィールドキャッシュを取得したら、すべての値がメモリに格納されているため、Lucene doc IDで値を検索することができます。

また、HashMapに配列のサイズ変更を回避するための初期容量を与えることを忘れないでください。

+0

FieldCacheを使用している例はありますか?私は検索しましたが、申し訳ありませんが、私はそれを見つけることができませんでした... – Nageswaran

関連する問題