2010-09-26 7 views
2

Je suis en train de suivre: http://dev.mysql.com/doc/refman/4.1/en/fulltext-natural-language.htmlmysql MATCH fulltext, CONTRE retour 0

pour tenter d'améliorer les requêtes de recherche, à la fois la vitesse et la possibilité de commander par le score.

Cependant, lorsque vous utilisez ce SQL ("skitt" est utilisé comme un terme de recherche juste pour que je puisse essayer de faire correspondre les Skittles).

SELECT 
    id,name,description,price,image, 
    MATCH (name,description) 
    AGAINST ('skitt') 
    AS score 
FROM 
    products 
WHERE 
    MATCH (name,description) 
AGAINST ('skitt') 

il renvoie 0 résultats. J'essaie de trouver pourquoi, je pense que j'ai peut-être mal réglé mon index, je ne suis pas sûr, c'est la première fois que je m'éloigne de LIKE!

Voici ma structure de la table et les données:

alt text

Merci!

Répondre

5

Par défaut, certains mots sont exclus de la recherche. Ceux-ci sont appelés stopwords. "a" est un exemple de mot d'ordre. Vous pouvez tester votre requête en utilisant un mot qui n'est pas un mot vide, ou vous pouvez désactiver les mots vides:

Si vous voulez faire correspondre également préfixes utiliser la truncation operator in boolean mode:

*

L'astérisque sert d'opérateur de troncature (ou de caractère générique). Contrairement aux autres opérateurs, il devrait être ajouté au mot pour être affecté. Les mots correspondent s'ils commencent par le mot précédant l'opérateur *.

+0

même si je remplace « un » avec « skitt » (pour correspondre Skittles) retourne toujours 0 – Titan

+0

Crooks @ Alex: Pourquoi voudriez-vous attendre « skitt » pour correspondre « Skittles »? Ce n'est pas le même mot. –

+0

Ah OK, donc je suis un idiot complet, je pensais que ça faisait des correspondances partielles aussi, si je le change en "skittles" ça marche, c'est ce que je veux quand même je suppose. Merci et désolé de perdre votre temps :) – Titan