Как удалить / обновить документ с помощью lucene? - PullRequest
6 голосов
/ 14 апреля 2010

Я создаю систему тегов для моего сайта

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

Я использую C # asp.net, и у меня нет установки Java на этой машине

Ответы [ 2 ]

11 голосов
/ 14 апреля 2010

Какую версию Lucene вы используете? Класс IndexWriter имеет метод update, который позволяет вам обновлять (кстати, обновление под капотом - это действительно удаление, за которым следует добавление). Вам нужно будет иметь некоторый идентификатор (например, идентификатор документа), который позволяет вам обновлять. Когда вы индексируете документ, добавьте уникальный идентификатор документа, такой как URL, счетчик и т. Д. Тогда «Термин» будет идентификатором документа, который вы хотите обновить. Например, используя URL, вы можете обновить таким образом:

IndexWriter writer = ...
writer.update(new Term("id","http://somedomain.org/somedoc.htm"), doc); 
3 голосов
/ 14 апреля 2010

Вам нужен IndexReader для удаления документа, я не уверен насчет версии .net, но версии Lucene API для Java и C ++ имеют класс IndexModifier, который скрывает различия между IndexReader и IndexWriter классов и просто использует соответствующий, как вы называете addDocument() и removeDocument().

Кроме того, не существует концепции обновления документа в Lucene, вы должны удалить его, а затем снова добавить его. Для этого вам нужно убедиться, что каждый документ имеет уникальный сохраненный идентификатор в индексе.

...