2012-10-06 2 views
0

Est-il possible de faire correspondre les mots qui commencent ou se terminent avec la chaîne de recherche?MySQL: fulltext booléen, recherche les mots qui commencent/finissent par x?

Exemple:

Je veux trouver une colonne qui contient le mot « ananas ». Je veux trouver cette rangée en cherchant "pine" ou simplement "apple" si c'est possible.

Est-ce que cela peut être fait?

code actuel, si elle aide:

SELECT id 
FROM movies 
WHERE MATCH (movies.movie_title) 
AGAINST ('+word1 +word2' IN BOOLEAN MODE) 
+0

yup - http://dev.mysql.com/doc/refman/5.1/fr/regexp.html – ethrbunny

+0

Pourriez-vous me donner un exemple? Edit: Je sais qu'il est possible d'utiliser LIKE, et cela semble aussi possible avec REGEXP, mais comment l'utiliser dans une requête fulltext? Voir TS, j'ai mis à jour avec le code. – qwerty

Répondre

0

Pour votre exemple:

select 'pineapple' regexp 'pine|apple'; 

Pour le cas plus général, si vous pouvez utiliser une instruction préparée, vous pouvez mettre ce que vous voulez regexp chaîne lorsque la requête est construite. S'il y a plusieurs choses à comparer, vous pouvez construire une expression complexe, ou la sous-sélectionner par rapport aux résultats et à la boucle, ou bien vous joindre à vous-même. Il y a beaucoup de façons d'aborder cela.

+0

Cela fonctionne, mais ce n'est pas une recherche de texte intégral, n'est-ce pas? Si ma DB n'était pas si grande, je l'utiliserais, mais je crains que ce ne soit terriblement lent à long terme car la DB ne cesse de grandir. – qwerty

+0

Il trouvera une instance de l'expression rationnelle dans la chaîne sélectionnée. Vous pouvez le limiter en utilisant d'autres paramètres dans l'expression rationnelle (début/fin de chaîne, nombre d'instances, etc.) – ethrbunny