2010-06-29 8 views
2

Je travaille sur un code existant qui construit un index de termes populaires dans un autre index. Il n'y a pas de tests unitaires en place, et le processus d'indexation est une douleur à attendre car le premier index prend tellement de temps à construire. Je souhaite structurer différemment le deuxième index (terme courant). Existe-t-il une meilleure pratique pour tester si un index Lucene est créé correctement?Test unitaire des indices Lucene

EDIT >> Par @ conseils de Pascal J'utilise un RAMDirectory, puis de tester l'indice que je viens d'écrire, je mis en place un IndexReader et itérer les résultats à long terme, l'impression sur chaque terme pour vous assurer que les regards de données bien.

code:

IndexReader reader = IndexReader.open(dir2); 
TermEnum terms = reader.terms(); 
System.out.println("Here come the terms!"); 
while (terms.next()){ 
    if (terms.term().field().equals("FULLTEXT")){ 
     System.out.println(terms.term()); 
    } 
} 
int numDocs = reader.maxDoc(); 
System.out.println("Number of Docs: " + numDocs); 

Si l'indice est vraiment important que je laisse courir un peu puis juste arrêter à mi-parcours.

Aussi, Luke est un excellent outil pour inspecter l'index si vous voulez être plus complet ... Je cherche juste quelque chose rapidement.

Toutes les autres idées sont les bienvenues!

Répondre

3

Lors de tests unitaires de l'index Lucene, j'utilise souvent RAMDirectory car il est rapide à construire.

+0

Bonne idée, de cette façon, elle ne persiste pas non? – stinkycheeseman

+0

Oui, il ne persistera pas sur le disque, mais il restera en mémoire pendant la durée du test. –

+0

Cela fonctionne très bien, merci Pascal! – stinkycheeseman