Recherche fulltext mot féminin et pluriel ?


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 10:11

Bonjour,

Je me suis confectionné un petit moteur de recherche tout simple basé sur le fulltext mais celui-ci ne prend pas en compte les mots féminins et au pluriels.

Une recherche sur le mot "site" ne prendra pas en compte le mot "sites".
Une recherche sur le mot "actualisé" ne prendra pas en compte le mot "actualisée".
Etc..

Je me demandais si il était judicieux d'ajouter un astérisque * en fin de chaque mot pour que le féminin et pluriel des mots soit pris en considération ?
Code: Tout sélectionner
$requete = explode(" ",$requete);
foreach($requete AS $variable_au_pif => $valeur)
{
  $recherche .= ''.$valeur.'* ';
}


Merci


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12003
Inscription: 1 Mar 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 10:18

C'est pa ssi simple ...

recherche : verbal
Faut aussi trouver : verbaux :!: mais pas verbeux :!:


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 10:59

Harggg, je n'avais pas vue cet aspect :( !

Bon, je vais rester sur du simple fulltext et ajouté un commentaire sur le fonctionnement du moteur avec les opérateurs + et *.


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12003
Inscription: 1 Mar 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 11:06

le plus simple, tu fais une recherche de type %lemot% et le user fait le tri ensuite


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 11:11

Zecat a écrit:le plus simple, tu fais une recherche de type %lemot% et le user fait le tri ensuite

C'est à dire?
En utilisant juste LIKE %lemot% ?


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12003
Inscription: 1 Mar 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 11:12

oui

Pense aussi , dès que tu fais du fulltexte, qu'il va te falloir gérer les caractères diacritiques :wink:
Dernière édition par Zecat le Ven Mar 18, 2011 11:15, édité 1 fois.


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 11:14

Ok, mais les recherches sont relativement pourrit avec LIKE me semble t'il..non ?
LIKE ne prend pas en compte un groupe de mots et n'effectue pas un classement de pertinence contrairement au fulltext si je ne me plante pas ??


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12003
Inscription: 1 Mar 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 11:17

Moi perso je procede en deux temps :

1 - un select like qui me donne une premiere selection
2 - ensuite je retravaille le tableau php et la tu as tout liberté ... je t'envoie un lien en mp pour illustrer ...


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 11:24

Oki, j'attends le mp.

Pour illustrer mon truc avec LIKE avec comme recherche par exemple "poussette bebevalle", LIKE va rechercher le terme exacte pour sortir les données. Si le titre d'une annonce contient "poussette de marque bebevalle", il ne la trouvera pas contrairement au fulltext qui va chercher les mots séparément.


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12003
Inscription: 1 Mar 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Ven Mar 18, 2011 11:24

tryan a écrit:Oki, j'attends le mp.

Pour illustrer mon truc avec LIKE avec comme recherche par exemple "poussette bebevalle", LIKE va rechercher le terme exacte pour sortir les données. Si le titre d'une annonce contient "poussette de marque bebevalle", il ne la trouvera pas contrairement au fulltext qui va chercher les mots séparément.

je t'ai envoyé exactement ca en MP !


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Re: Recherche fulltext mot féminin et pluriel ?

Message le Sam Mar 19, 2011 21:35

le regexp est bien indiqué pour cela, avec un masque du genre "actualis(e|é)[e]?[s]?"


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Dim Mar 20, 2011 11:08

Salut,

Aurais-tu un bout de code sous le coude utilisant du regex stp?


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Recherche fulltext mot féminin et pluriel ?

Message le Dim Mar 20, 2011 11:45

C'est assez compliqué.

En anglais ça s'appelle du stemming.
Une classe PHP qui permet ça: http://tartarus.org/~martin/PorterStemmer/php.txt ... mais c'est n'est que pour l'anglais.
En C pour le français: http://snowball.tartarus.org/algorithms/french/stemmer.html
En une extension PHP: http://code.google.com/p/php-stemmer/

Sinon se tourner vers: http://sphinxsearch.com/


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Re: Recherche fulltext mot féminin et pluriel ?

Message le Dim Mar 20, 2011 21:42

tryan a écrit:Salut,

Aurais-tu un bout de code sous le coude utilisant du regex stp?
comme un select normal :
Code: Tout sélectionner
select * from mytable where contenu regexp "actualis(e|é)[e]?[s]?"


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Recherche fulltext mot féminin et pluriel ?

Message le Mar Mar 22, 2011 19:29

@ Leonick : sur ton exemple, est ce que la recherche est sensible aux majuscules ou pas ?
Par exemple si je recherche le mot "Actualise", va t'il me sortir les résultats comprenant également le mot "actualise"?

Recherche fulltext mot féminin et pluriel ?

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité