MySQL搜索逗号分隔的关键字

我的表中有关键字列,并且有逗号(,)分隔值.例如:你好,世界

我有相同代码的搜索引擎:

$search = $_GET ['search'];

$query = $db->prepare("SELECT COUNT(*) as num FROM table WHERE keywords LIKE ?");
$query->bindValue(1, "%$search%", PDO::PARAM_STR);
$query->execute();

$sql = $db->prepare("SELECT * FROM table WHERE keywords LIKE ? LIMIT $start , $limit");
$sql->bindValue(1, "%$search%", PDO::PARAM_STR);
$sql->execute();

当我在搜索栏中只键入’hello’或者只键入’world’时,会有结果,但是如果我同时输入两个单词,就像’Hello world’那样没有结果.

编辑:
我编辑了我的全文搜索代码

$query = $db->prepare("SELECT COUNT(*) as num FROM table WHERE MATCH (id,keywords) AGAINST ('$search*' IN BOOLEAN MODE)");
$query->execute();

$sql = $db->prepare("SELECT * FROM table WHERE MATCH (id,keywords) AGAINST ('$search*' IN BOOLEAN MODE) LIMIT $start , $limit");
$sql->execute();

它效果更好,但现在我得到了一些不相关的结果.有没有办法过滤结果并命令它们相关?
谢谢

最佳答案
您应该尝试FullText索引和match…against查询.

jkavalik所示:

你可以做ORDER BY MATCH(id,keywords)AGAINST(‘$search’IN NATURAL LANGUAGE MODE)desc以获得最相关的顶部.

但是您应该做的是:使用原始表的外键创建另一个表关键字,并将每个关键字存储在单独的行中,而不是以逗号分隔的列表中.这样的清单只会让你头疼.

转载注明原文:MySQL搜索逗号分隔的关键字 - 代码日志