2009-08-23 9 views
1

J'ai le code ci-dessousRechercher MySQL Query

SELECT * FROM table WHERE MATCH(message) AGAINST ('Hello*') 

Si la chaîne de message est comme ce

"HelloWhatsHappening" 

Il dosent tout retour travail

Mais si j'ai

"Hello WhatsHappening" 

Cela fonctionne bien

Il travaillera également si la chaîne est en tant que telle:

"Hello= WhatsHappening" 

Des idées?

+0

Dois-je utiliser une requête similaire en divisant tous les mots ci-dessus en un tableau de mots à rechercher. Mais alors, comment correspondez-vous à ceux qui semblent le plus? –

Répondre

2

Vous devez spécifier votre requête avec un caractère générique et ajouter l'instruction "IN BOOLEAN MODE". Comme ceci:

SELECT * FROM table WHERE MATCH(message) AGAINST ('Hello*' IN BOOLEAN MODE) 

Vous pourriez aussi avoir des problèmes pour la recherche bonjour, car il est l'un des stop words dans MySQL. Donc il n'indexe pas le mot si c'est juste bonjour, mais il l'indexera si c'est le mot "HelloWhatsHappening".

+0

ooo je suis désolé .. j'ai oublié que dans la question .. Son déjà fait :( –

+0

J'ai ajouté le mode en BOOLEAN.Mais ça ne marche pas –

+0

Attendez je pense ima twonk: D ... dans ma table le Bonjour est stocké en tant que tel "Bonjour:" mais y at-il une raison pour laquelle cela ne fonctionne pas –