PHP 从 MySQL 数据库中搜索 FUL​​LTEXT 转义字符串

标签 php mysql database

这是我的表CompaniescName中的数据

CK'Wang Pte Ltd
Chong Wang Pte Ltd
CK'Studio Pte Ltd

这是我的查询

$query = mysql_query("SELECT cName FROM Companies WHERE MATCH cName AGAINST ('+CK\'Wang Pte Ltd' IN BOOLEAN MODE)");
$result = mysql_num_rows($query);

$结果显示 2。我怎样才能只匹配 1 (CK'Wang Pte Ltd) 而不是 2

最佳答案

如果您希望所有术语在 bool 模式下匹配,则需要在每个术语前面添加 +。查询的解释方式,CK 是强制性的,所有其他术语都是可选的,并且将主要影响结果的排名。

如果您需要根据用户请求构建查询并匹配所有术语,则需要先对其进行转换。

function fulltext_match_all($query)
{
    $final = array();
    foreach (array_filter(preg_split('/[\s\'-]+/', $query)) as $word) {
            $final[] = "+$word";
    }
    $query = implode(' ', $final);
}

您的最终查询将如下所示:

SELECT cName FROM Companies WHERE MATCH cName AGAINST ('+CK +Wang +Pte +Ltd' IN BOOLEAN MODE)

关于PHP 从 MySQL 数据库中搜索 FUL​​LTEXT 转义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778245/

相关文章:

mysql - 设计一个带有 facebook id 和正常注册的数据库

php - 如果 mysql 中的字段已完成则重定向

php - 使用用户名或电子邮件登录

php - 我如何创建这个数组? (PHP)

android - 获取相同位置的数据并将其显示在 TextView 中

MySQL:为按日期分组的最大值选择相应的行

php - 当来自两个单独表的主键匹配时插入一个新字段

php - Index.php 导致实时网站出现空警报

php - 'mush' 中的未知列 'where clause'

mysql - 当有新的 mysql 记录插入表中时创建 Node.js 事件监听器(用于通知提要)