Quelle est la manière idiomatique de supprimer les anciens documents d'un index Lucene?Comment supprimer des anciens documents de Lucene/Lucene.NET
J'ai un champ de date (AAAAMMjhhmmss) sur tous les documents, et je voudrais supprimer tout ce qui date de plus d'un jour (par exemple).
Dois-je effectuer une recherche filtrée ou énumérer dans les documents IndexReader? Je suis sûr que la question est la même, quelle que soit la plate-forme utilisée par Lucene.
Merci!
Un problème que je vois avec cette approche est que j'obtiendrai une exception "TooManyClauses" quand il y a plus de 1024 anciens documents. –
Cela dépend vraiment de votre implémentation. J'aurai besoin de connaître les détails, mais en règle générale, vous pouvez soit supprimer cet avertissement pour ces recherches puisqu'elles sont de toute façon seulement de maintenance (en augmentant le nombre de clauses max), soit effectuer des recherches plus spécifiques (YYMMddhh * etc.). Encore une fois, tout dépend de votre environnement et de votre implémentation. – synhershko
J'ai fini par faire une légère variation de ceci, en utilisant un MatchAllDocsQuery et un RangeFilter. Ça semble fonctionner jusqu'à maintenant ... –