Est-il possible de parcourir les documents stockés dans l'Index Lucene?
J'ai des documents stockés dans l'index Lucene avec un docId champ.
Je veux obtenir toutes les clés docids stockées dans l'index. Il ya aussi un problème. Nombre de documents est d'environ 300 000 de sorte que je préfère à obtenir cette clés docids en morceaux de taille 500. Est-il possible de le faire?
Vous devez vous connecter pour publier un commentaire.
Lucene 4
Voir LUCENE-2600 sur cette page pour plus de détails: https://lucene.apache.org/core/4_0_0/MIGRATE.html
Il y a une question de classe nommé
MatchAllDocsQuery
, je pense qu'il peut être utilisé dans ce cas:Numéros de Document (ou id) ultérieures seront des nombres de 0 à IndexReader.maxDoc()-1. Ces chiffres ne sont pas persistantes et sont valables uniquement pour ouvert IndexReader. Vous pouvez vérifier si le document est supprimé avec IndexReader.isDeleted(int numéro) méthode
Si vous utilisez .document(i) comme dans les exemples ci-dessus et sauter par-dessus des documents supprimés soyez prudent si vous utilisez cette méthode pour la pagination des résultats.
c'est à dire: Vous avez un 10 docs/par page la liste et que vous avez besoin pour obtenir de la documentation. de page 6. Votre contribution peut être quelque chose comme ceci: offset=60,count = 10 (documents de 60 à 70).
Vous avez quelques problèmes avec des supprimées parce que vous ne devriez pas commencer à partir de offset=60, mais à partir de offset=60 + le nombre de documents supprimés qui apparaissent avant 60 ans.
Une alternative que j'ai trouvé est quelque chose comme ceci:
remarque: remplacer le texte entre [[ ]] avec ses propres valeurs.
L'exécution de cette sur de larges index avec 1,5 million d'entrées et a obtenu aléatoire 10 résultats en moins d'une seconde.
D'accord, c'est plus lent, mais au moins, vous pouvez ignorer les documents supprimés, si vous avez besoin de la pagination.