2009-01-26 8 views
0

Je développe un moteur de recherche de bureau dans VB 9 en utilisant Lucene.NETComment utiliser un champ d'index pour supprimer une entrée?

Je souhaite supprimer et créer une nouvelle entrée pour un fichier qui est mis à jour.

L'index stocke le chemin de fichier complet et la dernière date de modification.

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)) 
. 
. 

J'utilise le IndexReader pour vérifier si un fichier est présent dans l'index (afin d'éviter réindexation les mêmes fichiers).

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

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

reader.Close() 

Je les doutes suivants:

  1. Comment puis-je utiliser la valeur dans le champ modified pour vérifier si l'entrée d'index pour un fichier particulier est vieux? Quelle fonction de IndexReader me permettra de faire cela?

  2. Comment puis-je obtenir le numéro du document (docnum) pour la fonction deleteDocument()

Répondre

1

Pour répondre à votre deuxième question, utilisez la méthode IndexReader suivante:

public int deleteDocuments(Term term) 

si vous avez gagné Pas besoin du numéro de document.

Questions connexes