#indexing #lucene #lucene.net
#индексирование #lucene #lucene.net
Вопрос:
У меня есть asp.net проект, в котором я добавил Lucene.net .Доступные для поиска данные взяты из базы данных. При создании приложения у меня есть метод, который добавляет все данные в индекс. Есть ли какой-либо способ добавить данные только один раз, и после этого только удалять и обновлять документы? Как долго длится время жизни индекса? Должен ли я добавлять данные каждый раз при создании приложения?
Ответ №1:
Я не совсем понимаю, что вы имеете в виду в отношении «времени жизни». Данные в индексе будут существовать до тех пор, пока вы их не удалите.
Да, существуют методы для удаления документа из индекса и для обновления документа в индексе.
writer.DeleteDocuments(query)
writer.UpdateDocument
Вероятно, стоит упомянуть, что writer.UpdateDocument
в конечном итоге Lucene удаляет документ, а затем добавляет новую версию в индекс. Хотя это то, что происходит под капотом, все равно полезно вызывать writer.UpdateDocument
, когда требуется обновить документ в индексе, поскольку показывает цель кода.
Таким образом, нет причин постоянно полностью перестраивать индекс, если у вас есть код, который может просто добавлять новые документы по мере необходимости, удалять документы по мере необходимости и обновлять документы по мере необходимости. Lucene поддерживает все эти операции.