【问题标题】:Searching by each word rather than complete string using MYSQL PHP使用 MYSQL PHP 按每个单词而不是完整字符串进行搜索
【发布时间】:2011-11-28 18:46:48
【问题描述】:

我的搜索允许用户在我的数据库中搜索游戏。唯一的问题是,如果用户在搜索中键入多个字词,则只有当这些字词彼此相邻时才会被点击。

例子:

搜索词 = 现代使命召唤

结果 = 无

但是如果他们输入:

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

结果 = 使命召唤现代战争 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);

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

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

任何建议将不胜感激

感谢您的宝贵时间

【问题讨论】:

    标签: php mysql string search


    【解决方案1】:

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

    它本质上将 mysql 变成了一个搜索引擎,您可以在其中使用 matchagainst 来获得搜索词在您匹配的列中出现的频率。它可以处理部分匹配、多个匹配、排除小/常见的单词以帮助提高性能,并允许搜索关键字/符号,如 +some -search 将返回必须有 some 但不能有 search 的结果。

    此外,设置起来非常容易,因为您需要的几乎所有东西都默认工作。

    【讨论】:

    • 哇,这正是我需要的(并且希望 mysql 有)=)
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 2020-02-15
    • 2021-03-31
    • 2012-10-13
    • 1970-01-01
    • 2021-10-06
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多