Vinayak Garg
Vinayak Garg

Reputation: 6606

How do I search Full text with partial matches?

I have a table, with not many rows, and neither many columns. I am doing a Full text search on 3 columns.

My code is

$search_input = trim($_GET['s']);
$search = mysql_real_escape_string($search_input);
$search = '+'.str_replace(' ', '* +', $search).'*';

$sql = "SELECT * FROM table WHERE   
        MATCH(def, pqr, xyz) AGAINST ('$search' IN BOOLEAN MODE)";

$result = mysql_query($sql);

I can correctly search for terms like abcdefgh, which are present as ... abcdefgh ....

But I am receiving empty set with search terms like abc, where in table entry is present something like abc-123, and also terms like abcdefghs. (notice this is plural of above)

Clearly I need to implement partial search, or something like that.
But how do I implement such a search? Any better way to do a entire table search on user input?

Do mention anything I am doing incorrectly.

EDIT : By adding * after each word, now I am able to also search for abcde, but above problems remains.

Upvotes: 0

Views: 628

Answers (1)

JohnP
JohnP

Reputation: 50009

Do you mean you don't get results for 3 letter combinations? If so, you might be hitting the mysql index length (which is usually set to 3)

More info here - http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

Upvotes: 1

Related Questions