I\'m having a problem when I try to do a full text search in boolean mode using a string with a single quote and an asterisk wildcard, i.e. \"levi\'s*\": it seems to search
I guess you should double quote the string you need to search for if it contains single quotes
Eg: MATCH(value) AGAINST ('"levi\'s"* lacost*' IN BOOLEAN MODE)
Piggy backing on Bart's comment to handle the single quote and still have the search function as a like, I treated each term separately. So the logic is - if a term has a single quote, wrap it with parenthesis, otherwise leave it. Here is some php code that may help
$term = preg_replace("/[']/", "\'", $term);
$terms = explode(' ',$term);
foreach ($terms as &$t) {
if (strpos($t, "'")) {
$t = "(".$t.")";
}
}
$term = implode(' ',$terms);
my match is AGAINST('$term' IN BOOLEAN MODE
this gives you the two rows from your example:
SELECT *
FROM ft
WHERE MATCH(value) AGAINST ('"levi\'s" lacost*' IN BOOLEAN MODE)
In http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html at the end, it talks about exact matches in double quotes. You then just escape the single quote and you are done.
Using parentheses, you can add the asterisk:
WHERE MATCH(value) AGAINST ('(levi\'s)* lacost*' IN BOOLEAN MODE)