THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Page recherche imprécise

(29-03-2010 15:54:03)


Re-bonjour,

j'ai un léger problème avec ma page de recherche.

J'ai des produits qui sont des confitures. Si je tape "confiture", j'ai bien tous mes produits, les titres de mes produits étant "confiture de fraise, confiture d'abricot, etc..."

Par contre, si je tape "confitures", avec un "s", il ne me trouve rien...

Comment faire en sorte que cela soit plus performant que ça ?

Offline


normal un moteur de recherche standard va te trouve un mot clé inclue dans des mots mais pas l'inverse...

il va te trouver "fitu" dans tes confitures mais pour qu'il recherche en supprimant des lettres la tu rentre dans un algorythme de calcul bien plus évolué que peu voir aucun CMS ne propose réellement à ce jour...

c'est possible à faire mais par contre hors de mes compétences technique. Eventuellement l'ami Roadster31 ?


MSN Messenger: info@rezopress.fr // Dispo si besoin d'aide sur THELIA

Offline


oui, j'y pensais ^^

Offline


Une technique connue est le 'stemming' ou racinisation, c'est à dire la normalisation des mots, par exemple rougeâtre, rouges et rougeur deviennent "roug".

Une approche interessante ici, mais uniquement pour la langue anglaise.

En fait, le vrais problème est de trouver un stemmer pour la langue française, et en PHP. Il existe une extension PECL de stemming, mais elle n'est sans doute pas dispo partout.

J'ai trouvé un stemmer PHP français ici, mais il y a un peu de travail pour intégrer tout ça à Thélia.

Last edited by roadster31 (29-03-2010 17:22:06)


OpenStudio Toulouse

Offline


Bonjour Ywan,

Un contournement que tu emploies peut etre deja?
Se servir d'un champ que tu n'utilise pas, par exemple 'postscriptum' et y rajouter les pluriels et autres qui pourrait etre utiles a la recherche du produit concerne.

Reg

Last edited by reg (30-03-2010 06:11:05)


le-bouquiniste.com                                                      tongue  plugin 1.4.x / 1.5   => valeurstock / Mailpaiement / formcontact

Offline


En fait, il n'y aurait pas tant de boulot que ça. Du coup, je me suis fendu d'un petit plugin de recherche tout simple, qui remplace avantageusement (enfin, j'espère) la recherche de base. Les mots saisis par votre client sont normalisés suivant l'algorithme Paice/Husk, ce qui permet d'obtenir de meilleurs résultats de recherche:

Exemple: "rouges", "rouge", "rougeatre", "rougeaud" sont normalisés en "roug",
ce qui permet de remonter tous les produits en rapport au rouge.

Si quelqu'un veut essayer ce plugin, c'est là.

Démo sur mon site de dev. Chercher le mot rouge (ou rouges, ...)

Last edited by roadster31 (31-03-2010 09:43:33)


OpenStudio Toulouse

Offline


J'essaye de suite tongue

Merci Roadster!

Offline


Moi j'ai essaye mais si je cherche 'rouge' j'ai par ex:20 resultats
et si je cherche 'rouges' je n'ai plus que 3 resultats
le terme semble etre pris dans son ensemble, que je coche 'au moins 1 des mots' ou 'tout les mots'...


le-bouquiniste.com                                                      tongue  plugin 1.4.x / 1.5   => valeurstock / Mailpaiement / formcontact

Offline


Elle ressemble à quoi, ta boucle produit dans la page recherche ?

Sr mon site de dev, ça marche très bien: chercher 'rouge'.

Last edited by roadster31 (31-03-2010 09:39:28)


OpenStudio Toulouse

Offline


Ok effectivement sur ton site, cela fonctionne tres bien big_smile
Pour la boucle produit j'ai juste rajoute: mode="#RECHERCHE_MODE"
dans le code d'origine (pur thelia))
<THELIA_PROD type="PRODUIT" mode="#RECHERCHE_MODE" rubrique="#RUBRIQUE_ID" classement="inverse" motcle="#PRODUIT_MOTCLE" num="12">
et modifie dans menu.html:

<form action="#URLRECHERCHE" method="post" name="recherche" id="recherche">
	<input name="motcle" type="text" value='Recherche' onclick="this.value='';"  />
	<p><button type="submit" class="bouton"><span><span>OK</span></span></button></p>
	<input style="width: auto;" type="radio" name="recherche_mode" value="et" checked="checked"/>Tous les mots<br />
	<input style="width: auto;" type="radio" name="recherche_mode" value="ou" />Au moins un des mots
</form>

en remplacement du code d'origine...
J'ai du faire trop vite lol


le-bouquiniste.com                                                      tongue  plugin 1.4.x / 1.5   => valeurstock / Mailpaiement / formcontact

Offline


Hé oui, tu es allé trop vite ! Voilà la boucle a utiliser dans recherche.html:

<THELIA_PROD type="RECHERCHE" boucle="produit" mode="#RECHERCHE_MODE" rubrique="#RUBRIQUE_ID" classement="inverse" motcle="#PRODUIT_MOTCLE" num="12">

Pourtant, je croyais l'avoir signalé dans le LISEZMOI.txt.

Last edited by roadster31 (31-03-2010 10:03:35)


OpenStudio Toulouse

Offline


Voila en gras s'est tout de suite plus clair lol
Merci.


le-bouquiniste.com                                                      tongue  plugin 1.4.x / 1.5   => valeurstock / Mailpaiement / formcontact

Offline


décidément roadster tu m'epatera toujours ...

bravo pour le plugin et les explications... je ne connaissai pas les stemmer et j'avoue que ca risque de m'etre utile dans le futur !


MSN Messenger: info@rezopress.fr // Dispo si besoin d'aide sur THELIA

  • yoan
  • Cofondateur Thelia

Offline


Pas mal.

Après pour avoir des résultats encore plus pertinents, il faudrait mettre des solutions plus complexes en utilisant des crawlers libres etc.

On pourrait utiliser la distance de Leveinstein mais il faudrait utiliser une base de cache sinon on partira dans des traitements trop longs et gourmands.


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Re,

moi j'ai un problème avec le parseur.

J'ai bien rentré les codes et ça me met une erreur :

Fatal error: Maximum execution time of 30 seconds exceeded in /web/zerosucreajoute/maquette/fonctions/parseur.php on line 54

Dans ma recherche j'ai :

<form action="#URLRECHERCHE" method="post" name="recherche" id="recherche">
			<input name="motcle" type="text" value='::votreproduit::' onclick="this.value='';"  />
			<button type="submit">ok</button>
			<input class="radio" type="radio" name="recherche_mode" value="et" checked="checked"/><p>Tous les mots</p></input>
			<input class="radio" type="radio" name="recherche_mode" value="ou" /><p>Au moins un des mots</p></input>
		</form>

et dans ma page recherche :

<THELIA_PROD type="RECHERCHE" boucle="produit" mode="#RECHERCHE_MODE" rubrique="#RUBRIQUE_ID" classement="inverse" motcle="#PRODUIT_MOTCLE">

Un indice ?

Offline


ywan wrote:

Un indice ?

Une boucle mal fermée.

Alfouine,


Au royaume des aveugles, les borgnes sont mal vus.

Offline


Bon, j'ai trouvé l'erreur.

Ma boucle n'était pas mal fermée, mais j'avais juste au dessus :

<!--
			<THELIA_PROD type="PRODUIT" rubrique="#RUBRIQUE_ID" classement="inverse" motcle="#PRODUIT_MOTCLE">
			-->

Donc ça devait rentrer en conflit...

ça fonctionne mieux depuis que je l'ai enlevé ^^

Offline


Ha ben vi, pour l'instant, Thélia ne propose pas de commentaires wink

C'est vraiment du vite fait ce plugin, je n'ai pas fait de tests très poussés. Si jamais des problèmes se révèlent, n'hésitez pas à les poster ici.


OpenStudio Toulouse

Offline


ok. Merci encore pour ce bon boulot ! ^^