您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在mysql中对多个字段进行加权搜索的最佳方法?

在mysql中对多个字段进行加权搜索的最佳方法?

进行加权搜索/结果搜索的这种方法可能适合您:

SELECT *,
    IF(
            `name` LIKE "searchterm%",  20, 
         IF(`name` LIKE "%searchterm%", 10, 0)
      )
      + IF(`description` LIKE "%searchterm%", 5,  0)
      + IF(`url`         LIKE "%searchterm%", 1,  0)
    AS `weight`
FROM `myTable`
WHERE (
    `name` LIKE "%searchterm%" 
    OR `description` LIKE "%searchterm%"
    OR `url`         LIKE "%searchterm%"
)
ORDER BY `weight` DESC
LIMIT 20

它使用选择子查询来提供权重以对结果进行排序。在这种情况下,搜索了三个字段,您可以为每个字段指定权重。它可能比联合会便宜,并且可能只是纯MysqL中更快的方式之一。

如果您有更多数据并且需要更快的结果,则可以考虑使用Sphinx或Lucene之类的东西。

MySQL 2022/1/1 18:21:17 有493人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶