2010-09-16 4 views
1

Lors d'une recherche sur la suppression de documents dans lucene, il m'a été montré que j'utilise la méthode indexReaders delete() en transmettant l'identifiant du document. Maintenant que j'ai vraiment besoin de faire cela, il semble que Lucene ne supporte actuellement pas cette méthode, et j'ai eu très peu de chance de trouver la manière actuelle de le faire.lucene supprimer le dossier, obsolète?

Des idées?

Répondre

1

maintenant les suppressions peut être fait avec IndexWriter

http://lucene.apache.org/java/3_0_2/api/all/org/apache/lucene/index/IndexWriter.html

+0

je dois être en mesure de supprimer par le docid cependant. J'ai un grand index, et reconstruire l'index avec l'unicité n'est pas une possibilité car il est plus de 100Go. plusieurs index ont été fusionnés ensemble donnant des entrées en double, et j'ai besoin de trouver un moyen de se débarrasser de ceux qui sont des doublons. J'ai trouvé le code pour le faire avec la méthode .delete() des lecteurs d'index, mais maintenant que c'est parti, j'ai du mal à trouver un moyen de le faire. – recursive9

1

ID Doc sont internes à Lucene, et vraiment ne devrait jamais être utilisé. Ils sont susceptibles de changer sans préavis, entre autres questions.

Comment obtenez-vous les ID de document? Vraisemblablement à travers une requête? Ensuite, supprimez simplement en fonction de cette requête. Alternativement, si vous avez votre propre champ ID unique, vous pouvez faire writer.DeleteDocuments(new Term("MyIDField", "ID to delete"));

Questions connexes