views:

198

answers:

1

I am building a little search function for my site. I am taking my user's query, stemming the keywords and then running a fulltext MySQL search against the stemmed keywords.

The problem is that MySQL is treating the stems as literal. Here is the process that is happening:

  1. user searches for a word like "baseballs"
  2. my stemming algorithm (Porter Stemmer) turns "baseballs" into "basebal"
  3. fulltext does not find anything matching "basebal", even though there SHOULD be matches for "baseball" and "baseballs"

How do I do the equivalent of LIKE 'basebal%' with fulltext?

EDIT:

Here is my current query:

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

I think it will work with an asterisk at the end: basebal*. See the * operator on this page for more info.

Kaleb Brasee
Kaled is doing full text search ... so he using MATCH
RageZ
Kaleb, as Ragez pointed out, I am in fact doing a match query...to make it clearer, i will add it to the question
johnnietheblack
Sorry, didn't realize that. I did find a post that says that explains why postfix MATCH wildcards are not implemented.
Kaleb Brasee
no worries...question mightve been unclear...
johnnietheblack
just saw your new edit...tried it...BINGO. thanks for the repeated tried haha
johnnietheblack
LOL, now I misunderstood the MySQL reference. Looks like an asterisk should work at the end, NOT at the beginning -- give that a try.
Kaleb Brasee
Awesome! 3rd time's a charm, LOL. And I learned something about FULLTEXT wildcards.
Kaleb Brasee