MySQL搜索短语或部分短语

时间:2015-12-24 08:19:30

标签: php mysql

我已经构建了快速搜索引擎来查找MySQL数据库中的产品,但我遇到了以下问题:

让我们以此产品为例:“iPhone 6S(128GB)Neverlocked”

如果我搜索“iPhone 6”,我会得到正确的结果。如果我搜索“iPhone Neverlocked”,它将不会显示任何结果。如果我使用“iPhone 128 6S”,也不会出现任何结果。

我目前使用的代码是:

$query = "SELECT * FROM ads WHERE lower(CONCAT(title, '', description)) LIKE lower('%$keywords%')";
$result = mysql_query($query) or die(mysql_error());

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用没有较低功能:

$query = "
SELECT *, LOWER(CONCAT_WS(title,description)) AS concatenated 
WHERE concatenated LIKE LOWER('%iPhone Mobiles Access%')";

并检查差异:

$query = "
    SELECT *, LOWER(CONCAT_WS(title,description)) AS concatenated 
    WHERE concatenated LIKE LOWER('%iphone mobiles access%')";

您也可以使用

来使用此查询
COLLATE UTF8_BIN

我建议使用mysqli_因为不推荐使用mysql_。

答案 1 :(得分:0)

这应该有效:

$keywords = str_replace(" ","|", $keywords);
$query = "SELECT * FROM ads 
        WHERE CONCAT(title, '', description) REGEXP '$keywords'";