Bonjour,
je suis en train de réaliser un moteur de recherche interne de mon site web avec base de donnée et table (id, titre, description, mots-clés, url, priorité, etc...) mais je rencontre un petit problème pour personnaliser son moteur de recherche interne.
Je souhaite pour une série de 3 requêtes, une pour rerchercher l'expression exacte, une pour rechercher les mots 1 par 1, une pour rechercher à l'intérieur de chaque mot s'il peut y'avoir des similitudes...
Sauf qu'avec ce que j'ai créé, certes je n'ai pas de bugs, mais je n'ai pas les résultats souhaités, ça ne fonctionne pas comme ça devrait.
Est-ce que quelqu'un peut m'aider à peaufiner les requêtes pour qu'elle ressemble à celle qu'elle devrais être ???
1/ La première requête doit rechercher l'expression exacte entrée dans le formulaire. Exemple, recherche de "pizzas napolitaines", ça doit rechercher "pizzas napolitaines". En principe, ce que j'ai doit être bon ?
2/ La seconde requête doit rechercher les mots 1 par 1 entrés dans le formulaire. Exemple, pour une recherche de "pizzas napolitaines", ça doit rechercher "pizzas" OR "napolitaines". Donc ce que j'ai ci-dessous n'ai pas bon, mais comment résoudre ça ? Que faire pour que ça corresponde à la bonne requête ? Découper $i ? Est-ce suffisant ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * from recherche where recherche_motscles LIKE '%$_POST[text]%' ORDER BY recherche_priority DESC
3/ La troisième requête doit rechercher entre les mots, les découper pour mieux les analysés. Exemple, pour une recherche de "pizzas napolitaines", ça doit rechercher tous les mots qui commence par "pi" ou "piz" ou "pizz" et pareil pour "nap" ou "napo" etc... etc... Quelque chose de similaire... J'ai au final ceci, mais est-ce vraiment le plus pertinant pour correspondre une fois encore à la requête demandée ??? Ou est-ce que ça n'a pas vraiment de rapport ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $query="SELECT * FROM recherche WHERE "; for($i=0;$i<sizeof($array_chaine);$i++){ if(strlen($array_chaine[$i])>3){ if($i>0){$query.=" OR ";} $query.="recherche_motscles = '$array_chaine[$i]'"; } } $query.= " ORDER BY recherche_priority DESC ";
Voilà, si quelqu'un peut m'aider à mieux développer tout ça, faire un truc bien précis, ce serait franchement sympa... Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $query="SELECT * FROM recherche WHERE "; for($i=0;$i<sizeof($array_chaine);$i++){ if(strlen($array_chaine[$i])>3){ if($i>0){$query.=" OR ";} $query.="recherche_motscles LIKE '%$array_chaine[$i]%'"; } } $query.= " ORDER BY recherche_priority DESC ";
a+
Partager