2010-04-19 4 views
3

Faire une recherche en utilisant django-sphinx me donne des résultats._sphinx qui dit qu'il y a eu 68 résultats, mais quand je les passe en revue, je ne peux en obtenir que les 20 premiers.Pourquoi django-sphinx ne produit-il que 20 résultats? Comment puis-je obtenir le reste?

Je suis sûr qu'il y a un moyen de contourner cela, et que c'est par conception, mais c'est officiellement m'arracher de moi. Est-ce que quelqu'un sait comment obtenir le jeu de requête complet?

+1

Je viens de découvrir ce que je pouvais changer, mais je suis préoccupé par c'est là pour ma propre protection: http://github.com/dcramer/django-sphinx /blob/master/djangosphinx/models.py#L206 – mlissner

+0

Je devrais ajouter que changer cette valeur n'a pas fait grand-chose pour moi. – mlissner

Répondre

2

Je l'ai compris finalement.

Apparemment, les jeux de requête ne renvoient que 20 appels jusqu'à ce que vous accédiez au jeu de requête. Ou quelque chose comme ça.

Donc, si vous voulez explicitement l'itérateur sur la chose, vous devez faire:

for result in results[0:results.count()]: 
    print result 

Ou quelque chose à cet effet, qui interrogera explicitement la chose entière. Pouah. Cela devrait être clairement documenté ... mais pas.

0

Après le piratage grâce à la source, je mets la variable limite_taille explicitement .. Est-ce que le travail, et émet une limite réelle:

qs = MyEntity.search.query(query_string) 
qs._limit = limit 
for result in qs: 
    print result 
0

travail pour moi:

dans le fichier de configuration sphynx:

max_matches  = 5000 

dans le code django:

desc_obj = Dictionary.search.query(search_desc) 
    desc_obj._maxmatches = 5000 

ou dans les paramètres:

SPHINX_MAX_MATCHES = 5000 
Questions connexes