使用MYSQL PHP搜索每个单词而不是完整的字符串

Dan*_*Dan 3 php mysql string search

我的搜索允许用户在我的数据库中搜索游戏.唯一的问题是,如果用户在搜索中键入多个术语,则只有当这些多个单词彼此相邻时才会获得命中.

例:

搜索词= Call Call duty Modern

result = none

但如果他们输入:

搜索词=使命召唤 - 或 - 现代战争

结果=使命召唤现代战争1/2/3等

这是我的mysql查询:

$query = "SELECT ID, title FROM games WHERE title LIKE '%{$title}%' AND platform = :platform LIMIT $startFrom,15";
        $statement = $dbG->prepare($query);
        $statement->bindValue(':platform', $platform);
        $statement->execute();
        $gamesLike = $statement->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

我知道我应该打破每个单词并搜索每个术语,但我担心它会耗尽我所有的程序速度......

我可以使用任何特定的MYSQL查询调整来实现我需要的结果吗?

任何建议将不胜感激

感谢您的时间

Jon*_*uhn 6

全文搜索非常适合:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

它实质上是将MySQL的到您使用搜索引擎matchagainst获得的搜索词条的频率在你匹配对列显示了排名回来.它可以处理部分匹配,多个匹配,排除小/常用的单词以帮助提高性能,并允许搜索关键字/符号,如+some -search将返回必须some但不具有的结果search.

此外,设置非常简单,因为默认情况下您需要的所有内容都可以使用.