moteur de recherche IN BOOLEAN MODE avec le S ou les maj

virginie
Invité n'ayant pas de compte PHPfrance

21 juin 2010, 07:50

Bonjour j'ai mis en place la requete pour faire une recherche par mot dans ma bdd mais si je tape le mot avec majuscule il ne me le trouve pas et si il est au pluriel non plus. Pouvez vous m'aiguiler pour le correctif. Merci

$sql = mysql_db_query($sql_bdd,"SELECT * FROM $table2 WHERE MATCH (titre,description) AGAINST ('+$recherche' IN BOOLEAN MODE) ORDER BY id DESC LIMIT ". $_GET['debut'] .",". $nb_affichage_par_page ." ;",$db_link) or die(mysql_error());
  





ViPHP
ViPHP | 1136 Messages

21 juin 2010, 07:58

Salut ,

quel est l'encodage de ta table ?

virginie
Invité n'ayant pas de compte PHPfrance

21 juin 2010, 09:05

C'est UTF8 unicode
merci

ViPHP
ViPHP | 1136 Messages

21 juin 2010, 09:53

Passe ta table en collation utf8_unicode_ci

utf8_unicode_ci (ci = case insensitive)

virginie
Invité n'ayant pas de compte PHPfrance

21 juin 2010, 11:09

Je viens de changer avec utf8_unicode_ci mais pas de résultat.

En fait j'aimerais, si je cherche avec ma requete un mot comme 'arbre' que le resultat trouvé soit

arbre - arbres - Arbre -Arbres - ARBRE - ARBRES

avec majuscule ou minuscule pluriel et singulier est ce possible ?

Merci à vous

Mammouth du PHP | 661 Messages

21 juin 2010, 15:45

théoriquement, dans l'état une requete sur le mot 'arbre' devrait déjà te retourner arbre - Arbre - ARBRE, en ayant passé la table en ci
ensuite, il faudra ajouter des éléments à ta clause pour gérer le pluriel

Virginie
Invité n'ayant pas de compte PHPfrance

21 juin 2010, 16:23

Rien a faire, j'ai changé même les champs dans ma table sur l'interclassement
je suis passé en utf8_unicode_ci
mais si j'écris pas le mot à l'identique la requete ne me trouve rien.

virginie
Invité n'ayant pas de compte PHPfrance

21 juin 2010, 18:48

Ok pour le pluriel ou singulier j'ai rajoutez * après $recherche
$sql = mysql_db_query($sql_bdd,"SELECT * FROM $table2 WHERE MATCH (titre,description) AGAINST ('+$recherche*' IN BOOLEAN MODE) ORDER BY id DESC LIMIT ". $_GET['debut'] .",". $nb_affichage_par_page ." ;",$db_link) or die(mysql_error());
 
Mais je trouve pas pour les majucules ou minuscules, elle fait toujours la différence. Si quelqu'un peut m'aider, merci

virginie
Invité n'ayant pas de compte PHPfrance

09 oct. 2010, 23:20

Bonjour, je relance le sujet sur mon problème concernant la recherche avec résultats en majuscule ou minuscule. Ca marche toujours pas malgrès mes recherches sur le net. 3 mois que je suis sur le sujet mais sans sucée. Qui peut m'aiguiller?
Merci

yop
Petit nouveau ! | 1 Messages

11 oct. 2010, 08:14

Salut virginie,
j'ai mis en place un moteur de recherche sur mon intranet
aucun problème avec les majuscules
par contre je n'utilise pas de clause MATCH
as-tu essayé avec une clause de base description='toto' ?

pour les pluriels, attention au *, tu vas récupérer plus d'info que demandé

Eléphant du PHP | 217 Messages

11 oct. 2010, 18:04

Hello,
essayez de reconstruire les index de la table :

REPAIR TABLE nom_de_votre_table QUICK;

Eléphant du PHP | 422 Messages

12 oct. 2010, 13:32

et avec la clause LIKE %% ?
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)