8
votes

WayStack QuerySet contient aucun élément

J'utilise Haystack pour la recherche et que le résultat résultant de la recherche est retourné ne contenant aucun élément: xxx

exécutant reconstrant_index n'aide pas. Si je supprimais l'appel de .models () de la première ligne, le problème disparaît. Je pourrais simplement filtrer aucun élément des résultats, mais je voulais savoir si cela est le comportement prévu?

J'utilise Django 1.4, Whoosh et Haystack 2.0.0-Beta


5 commentaires

Je ne l'ai pas encore essayé, mais Ce gars suggère d'utiliser SOLR au lieu de whoosh.


Mise à jour: Maintenant, je l'ai essayé et cela fonctionne avec SOLR.


Tout le monde sait que la recherche élastique ou la solution solrienne et performer - mais pour des sites de taille petite à midi, WHOOSH est très ok imho et ne fait pas de difficulté à installer / de configurer (seulement après, haha).


@zimkies utilisez-vous également Solr, maintenant?


@zimkies ayant une réponse deux ans plus tard, vous pourriez l'accepter après deux ans de plus, non? ;-) Au moins, c'est la seule réponse qui résoudra en quelque sorte le problème et ne suggère pas d'installer un backend différent ;-)


3 Réponses :


5
votes

J'ai eu ce problème lorsque HAYStacD Index avait des enregistrements sans enregistrements correspondants dans DB.


3 commentaires

Merci, ce n'est cependant pas le problème. Il s'avère que les valeurs «Aucune» correspondent aux objets utilisateur. Apparemment, la fonction Modèles supprime les hits qui ne sont pas du type de modèle droit mais ne laisse aucun type au lieu de les filtrer


Tu ne peux pas dire que ce problème est-il seulement pour "whoosh" backend? Utilise-t-il le moteur Solr le résout?


Donc, il n'y a pas de solution pour whoosh alors?



1
votes

avait le même problème à utiliser Whoosh, installé Elasticsicsearch et le Aucun est parti.


0 commentaires

3
votes

Non, ce n'est certainement pas le comportement prévu, et comme je peux le voir, semble être lié à une décision de conception à Whoosh. Et, en décembre 2015, cela semble toujours être un problème, comme on peut le voir Ici . En outre, je peux le reproduire avec ma configuration (Django 1.8.5, Haystack 2.4.1, Whoosh 2.7.0) - C'est pourquoi je suis venu ici.

Solution rapide et sale qui a fonctionné pour moi: Définissez un nouveau champ sur votre index (type / modèle / tomate), définissez-le identique pour chaque modèle et filtrer contre cette valeur:

.Filter (type = 'my_modelname')

au lieu de

.Models (myModel) .

Je ne sais pas (encore) comment cette balance, mais semble fonctionner correctement.


0 commentaires