需要一个更好的方式去关于这个FULLTEXT搜索查询
我目前正在忙于创建一个搜索函数,用于查询用户输入的字符串与mysql表中的某个行。
这就是目前代码的样子:
$space_separated = implode(" ", $keywords_array);
$dataQuery = "SELECT id, `desc`, price1, pack, measure, quantity
FROM products
WHERE MATCH (`desc`)
AGAINST ('".$space_separated."' IN BOOLEAN MODE)";
它并不完全提供所需的功能。 我知道在布尔模式下,我不喜欢使用评分。 但我的问题是,这段代码确实会返回任何字词上的部分匹配。
例如,如果用户搜索“巧克力”,他们搜索“olate”,则不会返回匹配。 我将如何解决这个问题?
@标记
你是在暗示这一点?
$dataQuery = "SELECT id, `desc`, price1, pack, measure, quantity
FROM products
WHERE MATCH (`desc`)
AGAINST ('".$space_separated."' IN BOOLEAN MODE)
OR MATCH (`desc`)
AGAINST ('".$space_separated."')";
FULLTEXT只搜索整个单词。 您可以在单词的一部分后面指定通配符*
,但不能在之前。 所以choco*
会匹配chocolate', but
* olate`不会。
此外,默认匹配使用or
比较。 如果您想匹配所有关键字,请在每个关键字前添加一个+
。
上一篇: Need a better way to go about this FULLTEXT search query