以下是表Companies
列cName
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);
$ result show 2.我怎样才能匹配1(CK'Wang Pte Ltd
)而不是2
答案 0 :(得分:1)
如果您希望所有术语在布尔模式下匹配,则需要在每个术语前添加一个+。解释查询的方式,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)