大数据量模糊匹配有快速响应的优化方案吗?

2021 年 4 月 14 日
 chinafengzhao

背景

MySQL,单表数据量超过 2000 万,需求是要求快速模糊查询。

select * from xxx where aaa like '%yyyyy' ;

有快速优化方案吗?

3497 次点击
所在节点    数据库
31 条回复
catchexception
2021 年 4 月 14 日
倒排索引。
3dwelcome
2021 年 4 月 14 日
@MinQ 我刚试了一下,没发现有什么问题。

ALTER TABLE table1 ADD INDEX REVERSE(col);
zhangysh1995
2021 年 4 月 14 日
@johnsona 一楼这个虽然有点魔幻,但是挺靠谱的。。。贴主要不考虑下?@chinafengzhao
zzl22100048
2021 年 4 月 14 日
上 ES,我们 2 亿企业数据,就靠 ES 撑着
ilylx2008
2021 年 4 月 14 日
数据变化不大的话,遍历 2000w 条记录,与公司的对应关系,生成一个关系表。
新增数据同样处理。
L1shen
2021 年 4 月 14 日
嫌 es 重的话,还可以用 sonic
https://github.com/valeriansaliou/sonic
mlcq
2021 年 4 月 14 日
2000 万还不分表吗,还有你的索引要建好,尽量不要回表。你那种写法是不走索引的
zhaokun
2021 年 4 月 14 日
不增加服务比如 ES,可以考虑自己做倒排索引,当然要依赖分词服务
jenlors
2021 年 4 月 14 日
试试 MySQL 全文索引,最简单的方案,增加中间件也会增加系统复杂度,需要仔细评估
johnsona
2021 年 4 月 14 日
@zhangysh1995 主要 es 依赖分词 效果和模糊搜索不一样 分词没分出来 那就搜不到 github 的 issue 模块搜索功能就这样
vindurriel
2021 年 4 月 15 日
ES Solr Lucene 解决不了 like %foo% 中文默认单字分词的时候可以按字搜出来 但这不是 like %foo% 而是 in (f, o, o)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/770500

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX