SamXIV Posted October 7, 2013 Share Posted October 7, 2013 Bonjour, La recherche de prestahop permet de rechercher des termes comportant plusieurs mots en les associant avec une condition "AND". Est-il possible de pousser un peu plus loin cette fonctionnalités en recherchant le terme saisi à l'identique en évitant qu'il cherche les mots dissociés les un des autres (comme on le ferait sur google avec des guillemets pour garantir que les mots se suivent dans l'ordre qu'on les a saisis") ? Merci d'avance pour vos lumières ! Excellente journée. Link to comment Share on other sites More sharing options...
Martin Uker K Posted October 7, 2013 Share Posted October 7, 2013 Bon matin, La solution n'est pas simple, elle demande un override sur la classe "search.php", sur la méthode "find" pour être précis. Il faudrait éviter que "$words" prenne les mots, et qu'il défasse le String de manière à isoler les mots entouré de guillement avant de faire son code. Martin Link to comment Share on other sites More sharing options...
SamXIV Posted October 7, 2013 Author Share Posted October 7, 2013 (edited) Alors j'en suis parvenu à la même conclusion et j'ai remplacé cette ligne : $words = explode(' ', Search::sanitize($expr, $id_lang)); Par celle ci : $words = array(Search::sanitize($expr, $id_lang)); En dur, juste pour voir ce qui se passait. Sauf que là, aucun résultat n'est retourné, je me suis donc dit que c'était plus compliqué que ça , ce qui m'amène ici. J'ai également repéré à plusieurs endroits une contrainte sur la longueur du terme, que j'ai supprimé, là aussi pour voir ce que ça donnait. Mais pas mieux. Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH) Merci quand même pour ta réponse. Edited October 7, 2013 by SamXIV (see edit history) Link to comment Share on other sites More sharing options...
Martin Uker K Posted October 7, 2013 Share Posted October 7, 2013 Le code est quand même assez complexe, il faudrait faire du Regex (Regular Expression) pour arriver à un bon résultat (Du moins après analyse sommaire et à ma connaissance). Le problème (Vu d'un puriste (moi)) c'est qu'on parle de "LIKE" ici, "LIKE" est l'une des commandes les plus gourmand point de vue performance. Nous sommes en plus en schéma relationnel et non en étoile, ce qui rend la recherche plus complexe vu le nombre de liaison (Jointure) nécessaire. Le tout en MySQL, on ne parle pas de Google ici (Nosql / hbase) qui est axé vers la recherche. Mais je considère tout de même la fonctionnalité intéressante et possible dans un contexte de performance, je ne crois pas le script assez gourmand pour donner une performance en haut de 3 secondes, quoique le tout dépend du nombre d'enregistrements. Martin Link to comment Share on other sites More sharing options...
IED Factory Posted September 26, 2017 Share Posted September 26, 2017 Bonjour, Avez-vous trouvé une solution ou un module à ce sujet ? Link to comment Share on other sites More sharing options...
IED Factory Posted September 26, 2017 Share Posted September 26, 2017 La solution icic : https://www.prestashop.com/forums/topic/154890-recherche-dans-prestashop/?p=2616096 Link to comment Share on other sites More sharing options...
Asu34 Posted February 27, 2020 Share Posted February 27, 2020 Bonjour, Avez-vous trouvé une solution pour pouvoir effectuer des recherches sur plusieurs mots ? Merci. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now