2010-03-07 6 views
12

J'utilise haystack avec whoosh comme backend pour une application Django.Whoosh index viewer

Existe-t-il un moyen d'afficher le contenu (dans un format facile à lire) des index générés par whoosh? J'aimerais voir quelles données ont été indexées et comment je peux mieux comprendre comment cela fonctionne.

Répondre

12

Vous pouvez le faire assez facilement de la console interactive de python:

>>> from whoosh.index import open_dir 
>>> ix = open_dir('whoosh_index') 
>>> ix.schema 
<<< <Schema: ['author', 'author_exact', 'content', 'django_ct', 'django_id', 'id', 'lexer', 'lexer_exact', 'published', 'published_exact']> 

Vous pouvez effectuer des requêtes de recherche directement sur votre index et faire toutes sortes de choses amusantes. Pour obtenir tous les documents que je pouvais faire ceci:

>>> from whoosh.query import Every 
>>> results = ix.searcher().search(Every('content')) 

Si vous vouliez imprimer tout cela (pour l'affichage ou autres joyeusetés), vous pouvez le faire assez facilement en utilisant un script python.

for result in results: 
    print "Rank: %s Id: %s Author: %s" % (result.rank, result['id'], result['author']) 
    print "Content:" 
    print result['content'] 

Vous pouvez également retourner les documents directement à partir whoosh dans une vue django (pour à peu mise en forme en utilisant peut-être le système de modèle de django): Se reporter à la documentation whoosh pour plus d'informations: http://packages.python.org/Whoosh/index.html.

5
from whoosh.index import open_dir 
ix = open_dir('whoosh_index') 
ix.searcher().documents() # will show all documents in the index. 
+0

Ceci retourne un objet générateur qui n'est pas indicable. Comment visualisons-nous les résultats? –

+0

Vous pouvez essayer d'appeler list() si vous voulez qu'il soit indentifiable. –