Lucene Field Group - PullRequest
       1

Lucene Field Group

1 голос
/ 31 января 2011

скажем, у меня есть поля stud_roll_number и date_leave.

выберите stud_roll_number, count (*) из some_table, где date_leave> some_date group by stud_roll_number;

как написатьтот же запрос с использованием Lucene .... Я пытался после запроса date_leave> some_date

для (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);

}

Но яЯ имею огромный набор данных, это занимает много времени, чтобы вычислить это.Есть ли другой способ найти его ????Заранее спасибо ...

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Существует очень новый модуль группировки, на https://issues.apache.org/jira/browse/LUCENE-1421 как патч, который сделает это.

0 голосов
/ 31 января 2011

Ваше узкое место в производительности - это почти всегда ввод-вывод, необходимый для поиска документов и значений полей. В этой ситуации вы хотите использовать FieldCache для поля, по которому хотите группировать данные. Если у вас есть кэш полей, вы можете искать значения по идентификатору документа Lucene, который будет быстрым, поскольку все значения находятся в памяти.

Также не забудьте дать вашей HashMap начальную емкость, чтобы избежать изменения размера массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...