PHP/MYSQL -需要一个更好的方式去这个FULLTEXT搜索查询


PHP/MYSQL - Need a better way to go about this FULLTEXT search query

我目前正忙着创建一个搜索函数,查询用户输入字符串对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)";

它没有完全提供所需的功能。我知道,在布尔模式下,我放弃了得分的使用。但我的问题是,这段代码确实返回部分匹配的任何集合词。

这样的一个例子是,如果用户搜索"chocolate",他们搜索的是"olate",则不会返回匹配项。我该如何解决这个问题?

@Mark

你是在建议这个吗?

$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进行比较。如果要匹配所有关键字,请在每个关键字前添加+