История индекса Lucene / Последний проиндексированный файл

#java #lucene #indexing

#java #lucene #индексирование

Вопрос:

Есть ли способ узнать последний документ Lucene, который был введен в индекс Lucene? Например. отслеживает ли Lucene историю каким-либо образом или я могу каким-то образом извлечь порядок файлов (документов), которые были добавлены в индекс?

Справочная информация: я хочу создать очень большой индекс с миллионами документов, для запуска которого требуется несколько дней. Я хотел бы иметь реализацию индекса, которая определяет, каким был последний добавленный файл, и продолжает работу в этой позиции при повторном перезапуске.

Ответ №1:

На самом деле, нет. Самое близкое, что вы могли бы получить, это получить самый высокий идентификатор документа из индекса. Если вы просто начнете добавлять документы в пустой индекс, и ничего не будет удалено или обновлено или что-либо подобное, тогда это может даже сработать. Однако нет никаких гарантий, что идентификаторы документов будут назначены по порядку.

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

Комментарии:

1. Имеет смысл, я сохранил последний идентификатор, который был проиндексирован из моей коллекции, и это, кажется, работает хорошо. На самом деле я сохраняю каждый идентификатор, так что мне не нужно задаваться вопросом, какой из них может быть двойным, а производительность во время выполнения довольно хорошая…