"et" logique dans recherche fulltext

rebaj
Invité n'ayant pas de compte PHPfrance

23 févr. 2006, 18:20

Bonjour!

Je me suis fait un petit moteur de recherche sur mon site, mais malheureusement n'arrive pas a bien parametrer ma requete fulltext. Je m'explique:

Quand je fait une recherche sur le terme "mot1 mot2", les résultats comportent soit les deux mots, soit l'un des deux.

Comment faire pour n'obtenir les résultats qui contiennent uniquement les deux mots?

ma requete:

Code : Tout sélectionner

SELECT *, MATCH (description) AGAINST ('+$motscles') AS score FROM matable WHERE MATCH (description) AGAINST (+'$motscles')";
merci!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 févr. 2006, 21:15

Peut-être en découpant et en cherchant les mots séparément :

Code : Tout sélectionner

SELECT * FROM matable WHERE MATCH (description) AGAINST ('$motscle1') AND MATCH (description) AGAINST ('$motscle2')";
Tu peux facilement récupérer un tableau contenant tes mots clés en faisant un explode avec le séparateur (espace, +...)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

23 févr. 2006, 21:55

Ou tout simplement en utilisant IN BOOLEAN MODE, dont c'est le boulot ;)

Code : Tout sélectionner

SELECT *, MATCH (description) AGAINST ('deux mots') AS score FROM matable WHERE MATCH (description) AGAINST ('+deux +mots' IN BOOLEAN MODE) ORDER BY score DESC
Veille bien à lire le manuel concernant le fonctionnement de IN BOOLEAN MODE. Par exemple, celui-ci ne renvoit pas les enregistrements par ordre de pertinence par défaut.