Jump to content

Module de recherche avancé


Recommended Posts

Bonjour. Dans le cadre d'une nouvelle boutique Prestashop (1.7.5.1), la pertinence des résultats de recherche est discutable. Je suis à la recherche d'un module de recherche permettant deux choses :

1/ afficher des résultats pour tous les mots clés (AND implicite au lieu du OR actuel), par exemple "pantalon vert" ne doit ramener que les résultats de produits contenant les deux mots, contrairement au résultat actuel ou un vase vert et un pantalon bleu figureront dans les résultats.

2/ modifier la priorité des résultats en fonction des catégories de produits. Par exemple les produits de la catégorie "Printemps-été 2020" doivent être prioritaires sur ceux de la catégorie "Automne-hiver 2019".

J'ai réussi à dénicher un bout de code pour modifier le premier point, sans garantie de pérennité, mais je ne parviens pas à trouver de module adéquat pour le second. J'imagine qu'il doit exister quelque chose faisant tout ça.

Merci d'avance !

Link to comment
Share on other sites

Bonjour,

Je ne sais pas si cela peut vous aider ou pas du tout, je partage au cas ou :

A condition de savoir un petit peu programmer, on peut résoudre le premier point simplement en surclassant la classe search (dans le code il suffit quasiment de remplacer les OR par des AND), sans avoir besoin d'un module. C'est ce que j'ai fait par exemple pour ajouter une recherche spécifique au page de CMS (base de connaissance d'articles )  https://www.sitolog.com/fr/content/28-aide-prestashop-sitolog

Si par exemple vous tapez "exporter déclinaisons", il ne vous propose que les articles ayant ces deux mots. 

J'en ai profité pour trier le résultats par ordre de pertinence. Pas par catégorie comme vous souhaitez, mais selon l'endroit ou sont trouvé les mots. S'ils sont dans le titre de l'article, cela compte plus que si c'est dans le corps du texte. Pour cela, il m'a suffit d'ordonner les blocs de recherche dans la requête SQL.

Surclasser une classe existante n'est pas très compliqué en lisant la doc. C'est en gros faire un copier coller le la classe dans le dossier override/classes/ ,  modifier son nom et virer toutes les fonctions que l'on ne souhaite pas modifier.

L'avantage de l'override est que justement c'est assez perenne (peut survivre à pas mal de mises à jour "mineures" de ps. Il faut quand même prendre le temps de noter ce que l'on a fait et documenter le code pour le jour ou une grosse mise à jour rende le code surclassé inopérant et à reprendre.

Bonne recherche.

Franck

 

 

Link to comment
Share on other sites

Merci pour cette réponse. Le code que j'ai trouvé utilise le surclassement. Mes années PHP sont loin et le code source est trop complexe pour moi. S'il suffisait de modifier une requête SQL en changeant un OR par un AND, je pourrais me débrouiller mais c'est loin d'être le cas. Je pense qu'un back-end graphique est indispensable, afin de pouvoir modifier facilement le poids de certains critères, par exemple au changement de saison. Mon client est prêt à payer pour un module.

Edited by i6n7fo (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...