想做个综合文章搜索系统

@Ta 2020-08-20发布,2020-08-20修改 10239点击

@老虎会游泳

数据

标题做了索引,不知道有无影响(发现并没有做索引),搜索的话是 标题 和 内容 进行模糊搜索的
来源于自己博客的数据大概 100多篇文章,然后对表自我进行复制,重复 N次,得到 519,766 条数据

听说如果文章很多,搜索起来就很慢,但我自己测试发现如果做了分页,每显示页100条数据,查询还是 0.0x秒内

不知道受限于什么影响,是重复内容吗

回复列表(16|隐藏机器人聊天)
  • @Ta / 2020-08-20 / /

    LIKE语句不使用索引。
    不过LIKE语句的性能也没有我们想象中的那么慢,虎绿林就在用,速度还是可以接受的。
    当然如果内容再多很多,那可能就不行了。

  • @Ta / 2020-08-20 / /
    被禁言
    用户被禁言,发言自动屏蔽。
  • @Ta / 2020-08-20 / /
    做大量数据的搜索不上Elasticsearch吗
  • 000
    @Ta / 2020-08-20 / /

    @老虎会游泳,其实还是可以使用到索引的,有个前提是,select 检索的字段 本身必须是包含索引或者是id,但不能有无索引的字段。
    默认*号全字段 未使用索引 type类型为all 全表扫描
    image.png
    group_id 有索引,type类型是index 用上了索引
    image.png
    erp_id 是主键,type类型是index 用上了索引
    image.png
    尽管里面带有主键和有索引的group_id 但其中is_hot未加索引 无法用到索引 type类型为all
    image.png

  • 000
    @Ta / 2020-08-20 / /

    不过index级别是最效果仅好于all的最差的一级 效果上有多少提升也是不太好说就是了

  • @Ta / 2020-08-20 / /
    @NowTime,也在做这方面的搜索,还在 研究  Elasticsearch  ,不知道这个容不容易使用,
  • @Ta / 2020-08-20 / /

    @000,你的group_id不是文本类型吧。如果是文本类型,普通索引就没什么用,因为普通索引只能做前缀匹配。要想任意位置匹配,就必须做全文索引。而全文索引必然涉及到分词,因为对每个字节都进行索引是不现实的,索引的大小会成倍增长,远大于原文,最后查找索引速度就不见得比直接查找原文快了。

    如果连这些都没有,我不相信mysql可以神奇的用上索引,它显然只能进行全表扫描。

  • 000
    @Ta / 2020-08-20 / /

    @老虎会游泳,嗯 意义有限

  • @Ta / 2020-08-21 / /

    数据载入redis中缓存
    这样应该会快一点吧具体我也不懂。
    健健康康
    一加8Pro 青

  • @Ta / 2020-08-21 / /

    @老虎会游泳@NowTime
    健健康康
    一加8Pro 青

  • @Ta / 2020-08-24 / /
    @老虎会游泳,就是我想问我有 50w+ 条数据,为什么用 LIKE 搜索还是很快,是我有重复数据的原因吗
  • @Ta / 2020-08-24 / /
    @罐子,是更快,我了解下
  • @Ta / 2020-08-24 / /
    @大尨,我之前用过 Sphinx,还是挺好的,主要我要对比下与 MySQL 的速度差异,但就目前测试的,好像没什么差异
  • @Ta / 2020-08-24 / /
    @NowTime,对比出什么结果了没?
  • @Ta / 2020-08-24 / /

    @NowTime,这么巧,我也有50w+条数据,用 LIKE 搜索也很快,而且还没有重复数据

    图片.png

    图片.png


    顺便一提,InnoDB是有查询缓存的,第二次执行相同的SQL就非常快了:

    图片.png

  • @Ta / 2020-08-25 / /
    @大尨,没结果,很迷(不过 Sphinx 的模糊搜索很好用)
添加新回复
回复需要登录