mysql - 最有效的搜索查询

标签 mysql sql

这个问题在这里已经有了答案:





MySQL - How to ORDER BY RELEVANCE? INNODB Table

(1 个回答)


8年前关闭。




我有一张产品表,我想在其中搜索产品。
目前,查询如下所示:

$query = "SELECT * FROM `products` WHERE `name` LIKE '%$qr_search%' LIMIT 0,$products_per_single_search";

如您所见,我使用 %SOME_TEXT%方法,很好,但还不够好。

如果用户搜索 pen他会得到如下结果:
  • 一分钱
  • 彭特拉
  • somewordPENword

  • 等等。我并不是说获得这些结果无关紧要,但我想在其中进行一些排序,因此最相关的结果将首先显示。

    有没有更好的机制呢?

    最佳答案

    MySql 中没有内置相关引擎。但是你可以添加这个ORDER BY子句为排序添加一些规则:

    ORDER BY CASE WHEN `name` LIKE '% $qr_search %' THEN 0
                  WHEN `name` LIKE '% $qr_search' THEN 1
                  WHEN `name` LIKE '$qr_search %' THEN 2
                  ELSE 3
             END
    

    关于mysql - 最有效的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809607/

    相关文章:

    mysql - 在每组行中执行操作

    mysql - 使用 MAX 命令返回上次订购的产品。 SQL

    php - 数组和子字符串 PHP

    php、mysql数据转换

    php - 连接到不同服务器上的 MySQL

    sql - 通过索引优化 SELECT

    mysql - 查询 SQL 从多个表中按 id 选择?

    php - 从表中获取依赖记录

    mysql - SQL - 测试分贝

    php - 如何按数据库中的两列分组?