已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 讨论/求助

标题: 想做个综合文章搜索系统

作者: @Ta

时间: 2020-08-20发布,2020-08-20修改

点击: 10236

@老虎会游泳

数据

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

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

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


[隐藏样式|查看源码]


『回复列表(16|隐藏机器人聊天)』

1.

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

(/@Ta/2020-08-20 19:15//)

2.
用户被禁言,发言自动屏蔽。
(/@Ta/2020-08-20 19:17//
被禁言
)

3. 做大量数据的搜索不上Elasticsearch吗
(/@Ta/2020-08-20 20:30//)

6.

@老虎会游泳,其实还是可以使用到索引的,有个前提是,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

(/@Ta/2020-08-20 21:25//)

7.

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

(/@Ta/2020-08-20 21:30//)

8. @NowTime,也在做这方面的搜索,还在 研究  Elasticsearch  ,不知道这个容不容易使用,
(/@Ta/2020-08-20 23:14//)

9.

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

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

(/@Ta/2020-08-20 23:19//)

10.

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

(/@Ta/2020-08-20 23:34//)

11.

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

(/@Ta/2020-08-21 09:52//)

12.

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

(/@Ta/2020-08-21 09:53//)

13. @老虎会游泳,就是我想问我有 50w+ 条数据,为什么用 LIKE 搜索还是很快,是我有重复数据的原因吗
(/@Ta/2020-08-24 11:27//)

14. @罐子,是更快,我了解下
(/@Ta/2020-08-24 11:29//)

15. @大尨,我之前用过 Sphinx,还是挺好的,主要我要对比下与 MySQL 的速度差异,但就目前测试的,好像没什么差异
(/@Ta/2020-08-24 11:30//)

16. @NowTime,对比出什么结果了没?
(/@Ta/2020-08-24 13:01//)

17.

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

图片.png

图片.png


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

图片.png

(/@Ta/2020-08-24 17:58//)

18. @大尨,没结果,很迷(不过 Sphinx 的模糊搜索很好用)
(/@Ta/2020-08-25 18:27//)

回复需要登录

9月7日 00:33 星期天

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1