php - 转换用于 MySQL FULLTEXT bool 模式的多词搜索字符串

标签 php mysql innodb full-text-search

我正在使用 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/

相关文章:

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

mysql - 列出购买过相同产品 MySQL 的客户

mysql - 使用 ALTER 进行表优化 (MySql)

mysql - 说明 - 默认外键约束 - InnoDB

php - 从具有相同列的两个表输出数据并添加变量作为标识符

php - 如何将 ZF2 单元/应用程序模块测试整合到单个调用中?

javascript - Laravel:注册表单打开时 session 过期

mysql - SQL 获取首先创建的金额最高的行

php - FPDF:在页面末尾添加一些文本

Mysql CHECKSUM TABLE 不适用于 ndbcluster