J'ai une boîte de saisie semi-automatique qui doit renvoyer des résultats ayant des mots d'entrée. Cependant, les mots d'entrée peuvent être partiels et situés dans un ordre ou des lieux différents.Rechercher une colonne pour plusieurs mots en utilisant le jeu de queues Django
Exemple:
Les valeurs dans la colonne de base de données (MySQL) -
Expected quarterly sales
Sales preceding quarter
Profit preceding quarter
Sales 12 months
Maintenant, si les types d'utilisateurs quarter sales
alors il devrait revenir à la fois des deux premiers résultats.
J'ai essayé:
column__icontains = term #searches only '%quarter sales% and thus gives no results
column__search = term #searches any of complete words and also returns last result
**{'ratio_name__icontains':each_term for each_term in term.split()} #this searches only sales as it is the last keyword argument
Toute astuce via regex ou peut-être quelque chose que je suis absent de Django intégré puisque c'est un modèle commun?
Peut-être que je me trompe, mais cela ressemble plus à un problème de recherche de texte intégral pour moi. Vous devriez jeter un oeil à la recherche en texte intégral MySQL et voir si elle correspond à vos besoins. –
Avez-vous essayé d'utiliser un moteur de recherche? Vérifiez la meule de foin (http://haystacksearch.org/). Il supporte whoosh qui est très facile à utiliser au début, et bien plus encore – szaman
Salut Manoj, j'ai essayé la recherche en texte intégral mais elle renvoie des résultats qui ont TOUS les mots ci-dessus. Exemple, il renvoie également Sales 12 mois (ce qui ne devrait pas). – Pratyush