我已经构建了快速搜索引擎来查找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());
我该怎么做才能解决这个问题?
答案 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'";