Как использовать поле из индекса для удаления записи? - PullRequest
0 голосов
/ 26 января 2009

Я разрабатываю поисковую систему для настольных компьютеров в VB 9, используя Lucene.NET

Я хочу удалить и создать новую запись для файла, который обновляется.

Индекс хранит полный путь к файлу и дату последнего изменения.

doc.Add(New Field("path", filepath, Field.Store.YES, Field.Index.UN_TOKENIZED))
doc.Add(New Field("modified", New FileInfo(filepath).LastWriteTime, Field.Store.YES, Field.Index.UN_TOKENIZED))
.
.

Я использую IndexReader для проверки наличия файла в индексе (чтобы избежать повторной индексации тех же файлов).

Dim reader As IndexReader = IndexReader.Open(SearchForm.IndexFolderTextBox.Text)

If reader.DocFreq(New Term("path", filepath)) = 0 Then
     addFile(filepath)
End If

reader.Close()

У меня есть следующие сомнения:

  1. Как использовать значение в поле modified, чтобы проверить, является ли запись индекса для определенного файла старой? Какая функция IndexReader позволит мне сделать это?

  2. Как получить номер документа (docNum) для функции deleteDocument ()

1 Ответ

1 голос
/ 28 января 2009

Чтобы ответить на ваши вторые вопросы, используйте следующий метод IndexReader:

public int deleteDocuments(Term term)

, поэтому вам не понадобится номер документа.

...