2010-10-09 8 views
1

Je sais que la plupart des gens de temps juste faire unBase de données Recherche PHP Mysql

LIKE '%$search_query%' 

mais voir la chose est, dans mon cas où quelqu'un peut être à la recherche des choses comme

que la vache est la graisse

maintenant, la chose est dans ma base de données, je ne serais pas stocker exactement comme « la vache est gras » je serais stocker quelque chose comme « grosse vache » en utilisant si

LIKE '%$search_query%' 

ne fonctionnerait pas.

Quelqu'un peut-il me diriger dans la bonne direction pour un moyen efficace de rechercher dans ma base de données comme je l'ai expliqué?

Merci

Répondre

4

Vous cherchez full-text search, avec la restriction que la valeur par défaut longueur minimale de mot il y a 4 par défaut, donc il ne fonctionnera pas pour vos exemples.

Un exemple qui recherche « maison » et « grange » dans les dossiers qui ne contiennent pas « moutons » en mode booléen:

SELECT * FROM table WHERE MATCH (columnname) 
     AGAINST ('+house +barn -sheep' IN BOOLEAN MODE); 

Alternativement, le langage naturel peut mieux fonctionner pour des phrases complètes.

La recherche en texte intégral est un domaine plutôt complexe, cependant, avec beaucoup de mises en garde et de pièges. Il vaut la peine de lire attentivement le manuel.

+0

Très bien, je l'ai eu le travail mais maintenant pour une raison étrange, j'ai 1 problème. Il ne retourne aucun résultat quand je cherche "Like" (quand il devrait être) mais il les rend bien pour tout le reste. Pourrait-il être ignorer car il est couramment utilisé dans les chaînes de requête mysql? –

+0

@Belgin c'est pourquoi je vous ai besoin de lire le manuel pour les getchas :) Voir [mySQL Stopwords] (http://dev.mysql.com/doc/refman/5.1/fr/fulltext-stopwords.html) –

Questions connexes