Чтобы удалить документ в Lucene, есть функция indexWriter.deleteDocuments (...) с Query и / или Terms.
Это отлично работает.
Однако мне нужно будет просмотреть коллекцию документов и удалить некоторые из них в зависимости от условия.
Я мог бы добавить поле уникального идентификатора в документе и вызвать indexWriter.deleteDocuments (...) на основе этого уникального идентификатора.
Однако я бы хотел избежать этой опции и вместо этого сделать что-то подобное:
TopDocs hits = indexSearcher.search(...);
for (ScoreDoc scoreDoc : hits.scoreDocs) {
Document doc = indexSearcher.doc(scoreDoc.doc);
if (...) {
indexWriter.delete(doc); // or similar
}
}
Возможно ли это сделать?
ps. Опять же, я знаю, что могу добавить поле уникального идентификатора в документ,
и удалите документ внутри цикла, вызвав indexWriter.deleteDocuments (...) на основе этого уникального идентификатора.
Это будет работать нормально. Однако я спрашиваю, возможно ли это сделать без этой опции.
Пожалуйста, не отвечайте о том, является ли это правильным подходом. Это интересная дискуссия, но она не является целью этого поста.
Пожалуйста, отвечайте только о том, возможно ли (и как), или нет, без добавления уникального идентификатора.
pss: Я знаю, что повторяюсь, но я скажу это снова, потому что боюсь, что получу ответы, не связанные с целью этого поста.
на самом деле, пожалуйста, сосредоточьтесь только на том, возможно ли это (и как) или нет без добавления уникального идентификатора.