У меня есть некоторые документы, хранившие в индексе Lucene с docId полем. Я хочу получить весь docIds, сохраненный в индексе. Существует также проблема. Количество документов - приблизительно 300 000, таким образом, я предпочел бы получать этот docIds в блоках размера 500. Действительно ли возможно сделать так?
IndexReader reader = // create IndexReader
for (int i=0; i<reader.maxDoc(); i++) {
if (reader.isDeleted(i))
continue;
Document doc = reader.document(i);
String docId = doc.get("docId");
// do something with docId here...
}
C, C++ и Ada упоминаются здесь (да, авторы не могут оприходовать «Ada»). Код C может быть записан вручную или сгенерирован с помощью Scade .
-121--2270220-Я занимался той же проблемой. До сих пор моим лучшим решением было получить идентификатор родительского процесса (getppid ()) и использовать его во временном файле, в который я могу поместить список файлов из commitinfo. Этот родительский идентификатор, по-видимому, одинаков для процесса verifymsg (по крайней мере, в AIX). Удачи.
-121--4860182-Номера документов (или идентификаторы) будут следующими числами от 0 до IndexReader.maxDoc () -1. Эти номера не являются постоянными и допустимы только для открытого IndexReader. Можно проверить, удален ли документ с помощью метода IndexReader.isDeleted (int documentNumber)