par
mankind » 03 avr. 2006, 15:16
voici la solution que j'ai trouvé :
dans le formulaire je rajoute une option de recherche "tous les mots", "n'importe quel mot":
Code : Tout sélectionner
echo '<input type=text name=motsclefs>';
echo ' ';
echo '<select name=optionrech>';
echo '<option selected>tous les mots</option>';
echo "<option>n'importe quel mot</option>";
echo '</select>';
si c'est une recherche sur tous les mots, je rajoute un + devant chaque mot clé entré par l'utilisateur. si c'est une recherche sur n'importe quel terme, il n'y a rien à faire, c'est le mode de recherche plein texte par défaut de mysql.
if ($optionrech == "tous les mots") {
$listemotsclefs = explode(" ", $motsclefs);
$listedef = '';
foreach ( $listemotsclefs as $liste ) {
$listedef .= '+'.$liste.' ';
}
}
else { $listedef = $motsclefs; }
en je finis par la requete php
$select = 'SELECT *,MATCH (titre,texte) AGAINST ("'.$listedef.'" IN BOOLEAN MODE) AS score FROM articles WHERE visible = "oui" AND rubrique = "'.$rubrique.'" AND MATCH (titre,texte) AGAINST ("'.$listedef.'" IN BOOLEAN MODE) ORDER by score DESC LIMIT 50';
voilà. merci.
voici la solution que j'ai trouvé :
dans le formulaire je rajoute une option de recherche "tous les mots", "n'importe quel mot":
[code]
echo '<input type=text name=motsclefs>';
echo ' ';
echo '<select name=optionrech>';
echo '<option selected>tous les mots</option>';
echo "<option>n'importe quel mot</option>";
echo '</select>';
[/code]
si c'est une recherche sur tous les mots, je rajoute un + devant chaque mot clé entré par l'utilisateur. si c'est une recherche sur n'importe quel terme, il n'y a rien à faire, c'est le mode de recherche plein texte par défaut de mysql.
[php]
if ($optionrech == "tous les mots") {
$listemotsclefs = explode(" ", $motsclefs);
$listedef = '';
foreach ( $listemotsclefs as $liste ) {
$listedef .= '+'.$liste.' ';
}
}
else { $listedef = $motsclefs; }
[/php]
en je finis par la requete php
[php]
$select = 'SELECT *,MATCH (titre,texte) AGAINST ("'.$listedef.'" IN BOOLEAN MODE) AS score FROM articles WHERE visible = "oui" AND rubrique = "'.$rubrique.'" AND MATCH (titre,texte) AGAINST ("'.$listedef.'" IN BOOLEAN MODE) ORDER by score DESC LIMIT 50';
[/php]
voilà. merci.