Afin de garder mon index à jour, j'ai besoin d'ajouter/modifier mon index de recherche toutes les 5 minutes. La façon dont je l'ai mis en place est avec 2 index, un dans le répertoire complet et un dans le répertoire Incremental, et pour les rechercher, j'utilise un MultiSearcher.Lucene.Net maintien des index lors de l'utilisation de MultiSearcher
J'écris maintenant un processus pour maintenir l'index. Ce que je fais est de passer la dernière date d'index à une procédure stockée et la base de données retourne tous les enregistrements nouveaux/modifiés basés sur un champ "UpdatedOn" dans la base de données. Je boucle ensuite à travers les 2 répertoires, en ouvrant un IndexReader pour chaque répertoire et en supprimant le document basé sur un TermQuery pour la clé primaire. J'ajoute ensuite les enregistrements à l'index incrémental en utilisant un IndexWriter et je l'optimise.
Que se passe-t-il lorsque je fais des recherches ultérieures est que les enregistrements que je sais sont dans l'index ne sont pas retournés.
Est-ce que la maintenance de l'index est incorrecte?
Oui, je ferme le IndexSearcher après chaque recherche. – druta