Je travaille sur une page 'recherche avancée' sur un site où vous entrez un mot-clé tel que 'J'aime les pommes' et il peut chercher dans la base de données en utilisant les options suivantes:'Recherche Avancée' Page
Recherche: Avec tous les mots, Avec l'expression exacte , avec au moins l'un des les mots, sans les mots
Je peux prendre soin de la « phrase exacte » par:
SELECT * FROM myTable WHERE field='$keyword';
« au moins un des mots » par:
SELECT * FROM myTable WHERE field LIKE '%$keyword%';//Let me know if this is the wrong approach
Mais son du « Avec au moins un des mots » et « Sans les mots » que je suis coincé sur.
Des suggestions sur la façon de mettre en œuvre ces deux?
Edit: En ce qui concerne 'Au moins un mot, il ne serait pas une bonne approche pour utiliser explode() pour casser les mots-clés en mots, et exécuter une boucle pour ajouter
(field='$keywords') OR ($field='$keywords) (OR)....
Parce qu'il Il y a aussi d'autres clauses AND/OR dans la requête et je ne connais pas le nombre maximum de clauses possibles.
+1, c'est la meilleure réponse, mais je voudrais aussi détails que fulltext sur mysql n'est disponible que pour les tables myisam, pas innodb, donc vous choisissez entre la cohérence transactionnelle ou la recherche –
Si vous donnez du code source qui montre comment les deux caractéristiques (ie tous les mots et sans les mots) peuvent être faites avec le texte intégral, je pourrais accepter votre réponse –
Je serais heureux de vous fournir un exemple de code.Si vous pouvez me dire s'il y a deux champs séparés dans votre formulaire de recherche pour avec ou sans ou utilisez-vous un champ? Si c'est un champ vous pouvez simplement permettre à l'utilisateur d'ajouter les mots qu'il veut exclure avec un - –