2010-09-16 3 views
1

При проведении исследований по удалению документов в lucene мне показали использование метода IndexReaders delete(), передающего идентификатор документа. Теперь, когда мне действительно нужно это сделать, похоже, что lucene в настоящее время не поддерживает этот метод, и мне очень мало удавалось найти текущий способ сделать это.lucene удалить запись, не рекомендуется?

Любые идеи?

ответ

1

теперь делеция может быть сделана с IndexWriter

http://lucene.apache.org/java/3_0_2/api/all/org/apache/lucene/index/IndexWriter.html

+0

Мне нужно удалить docid. У меня большой индекс, и восстановление индекса с уникальностью не является возможным, так как оно превышает 100 гб. несколько индексов были объединены вместе, давая повторяющиеся записи, и мне нужно найти способ избавиться от дубликатов. Я нашел код для этого с помощью метода чтения индексов .delete(), но теперь, когда его ушло, мне очень сложно найти способ сделать это. – recursive9

1

идентификаторы Doc является внутренним Lucene, и на самом деле никогда не должна использоваться. Они могут меняться без предупреждения, среди других вопросов.

Как вы получаете идентификаторы документов? Предположительно через запрос? Затем просто удалите на основе этого запроса. В качестве альтернативы, если у вас есть свой собственный уникальный идентификатор, вы можете сделать writer.DeleteDocuments(new Term("MyIDField", "ID to delete"));

Смежные вопросы