需要一个更好的方式去关于这个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比较。 如果您想匹配所有关键字,请在每个关键字前添加一个+

链接地址: http://www.djcxy.com/p/75317.html

上一篇: Need a better way to go about this FULLTEXT search query

下一篇: MySQL match() against()