Mysql 带单引号的全文查询

Mysql 带单引号的全文查询,mysql,full-text-search,match-against,Mysql,Full Text Search,Match Against,当我尝试在布尔模式下使用带单引号和星号通配符的字符串(即“levi’s*”)进行全文搜索时,我遇到了一个问题:它似乎也搜索以“s”开头的所有单词,如“spears”,而据我所知,引号应该被视为单词的一部分,而两个单引号(“”)将是一个单词分隔符。。。但也许我错了 请看下面的例子:-第二排不应该在那里 我该如何做我想做的事?我想如果字符串包含单引号,您应该对需要搜索的字符串加双引号 例如:MATCH(value)对(“'levi's”*lacost*”在布尔模式下)这给出了示例中的两行: SELE

当我尝试在布尔模式下使用带单引号和星号通配符的字符串(即“levi’s*”)进行全文搜索时,我遇到了一个问题:它似乎也搜索以“s”开头的所有单词,如“spears”,而据我所知,引号应该被视为单词的一部分,而两个单引号(“”)将是一个单词分隔符。。。但也许我错了

请看下面的例子:-第二排不应该在那里


我该如何做我想做的事?

我想如果字符串包含单引号,您应该对需要搜索的字符串加双引号


例如:
MATCH(value)对(“'levi's”*lacost*”在布尔模式下)

这给出了示例中的两行:

SELECT  *
FROM    ft
WHERE   MATCH(value) AGAINST ('"levi\'s" lacost*' IN BOOLEAN MODE)
最后,它用双引号讨论了精确匹配。然后,您只需退出单引号,就完成了

使用括号,可以添加星号:

WHERE   MATCH(value) AGAINST ('(levi\'s)* lacost*' IN BOOLEAN MODE)

借助巴特的评论来处理单引号,并且仍然像一样具有搜索功能,我分别处理每个术语。 所以逻辑是-如果一个术语只有一个引号,用括号括起来,否则就留下它。 下面是一些可能有帮助的php代码

$term = preg_replace("/[']/", "\'", $term);
$terms = explode(' ',$term);
foreach ($terms as &$t) {
    if (strpos($t, "'")) {
        $t = "(".$t.")";
    }
}
$term = implode(' ',$terms);

我的匹配是反对的($term)在布尔模式下

问题是,这些查询都找不到,即“levi'strauss”,双引号后的星号似乎没有任何作用(“lacost”*也不起作用),我不得不说我没有使用
match()
ever。我会改用正则表达式。@BartFriederichs如何在查询中使用多个match()对()呢?我尝试了
match(column1)对(鸡肉)和match(column2)对(牛肉)
。不起作用。有什么想法吗?谢谢