说我有字段stud_roll_number和date_leave。
从some_table中选择stud_roll_number,count(*),其中date_leave> some_date group by stud_roll_number;
如何使用Lucene编写相同的查询....我在查询date_leave>后尝试过some_date
for(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 :(得分:0)
您的性能瓶颈几乎肯定是执行文档和字段值查找所需的I / O.在这种情况下,您要做的是对要分组的字段使用FieldCache。有了字段缓存后,您可以通过Lucene doc ID查找值,这将很快,因为所有值都在内存中。
还要记住为HashMap提供初始容量以避免数组大小调整。
答案 1 :(得分:0)
在https://issues.apache.org/jira/browse/LUCENE-1421作为补丁,有一个非常新的分组模块可以执行此操作。