我正在使用 Innodb 的 FTS 功能来搜索我的数据库并返回按相关性排序的结果。使用 bool 模式时,搜索字符串必须转换为一种形式,其中各个术语必须由一些运算符分隔,如 +
、~
、-
, *
。
如果我有一个包含多个单词的搜索字符串,我如何(可能使用 PHP)转换搜索字符串以便我可以将其与 MATCH()....AGAINST()
一起使用条款?
搜索词:
堆栈溢出
SQL 查询:
SELECT * FROM mytable WHERE
MATCH ( name, description)
AGAINST ('+*stack* +*over* +*flow*' IN BOOLEAN MODE);"
匹配结果
stack over flow
haystack hover flowers
最佳答案
我做的模糊搜索:
$search_words = explode(' ', $search);
foreach ($search_words as $foo) {
$sql_search .= '*' . $foo . '* ' ;
}
或常规:
$search_words = explode(' ', $search);
$sql_search = '+' . implode(" +", $search_words);
关于php - 转换用于 MySQL FULLTEXT bool 模式的多词搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11978917/