2010-01-14 5 views
4

Je construis une petite fonction de recherche pour mon site. Je prends la requête de mon utilisateur, en supprimant les mots-clés, puis en exécutant une recherche MySQL fulltext par rapport aux mots-clés stemmed.MySQL fulltext with stems

Le problème est que MySQL traite les colonnes comme littérales. Voici le processus qui se produit:

  1. utilisateur recherche un mot comme « balles de baseball »
  2. mon algorithme de lemmatisation (Porter Stemmer) Turns « balles de baseball » dans « basebal »
  3. texte intégral ne trouve rien correspondant "basebal", même s'il DEVRAIT y avoir des correspondances pour "baseball" et "baseball"

Comment faire l'équivalent de LIKE 'basebal%' avec fulltext?

EDIT:

Voici ma requête en cours:

SELECT MATCH (`title`,`body`) AGAINST ('basebal') AS `relevance`,`id` FROM `blogs` WHERE MATCH (`title`,`body`) AGAINST ('basebal') ORDER BY `relevance` DESC 

Répondre

6

Je pense que cela fonctionnera avec un astérisque à la fin: basebal*. Voir l'opérateur * sur this page pour plus d'informations.

+0

Kaled fait la recherche en texte intégral ... donc il en utilisant MATCH – RageZ

+0

Kaleb, Comme Ragez l'a souligné, je suis en train de faire une requête de correspondance ... pour le rendre plus clair, je vais l'ajouter à la question – johnnietheblack

+0

Désolé, je ne m'en suis pas rendu compte. J'ai trouvé un article qui explique pourquoi les caractères génériques MATCH postfix ne sont pas implémentés. –