百万条数据想加快字符串匹配的速度,有什么解法

2021-12-15 00:49:10 +08:00
 lhx2008
数据是普通的文本数据,字符串匹配就是不分词根据输入直接搜,类似记事本那种。

如果用传统数据库匹配速度有点差,类 ES 的好像分词的问题不太好处理,还有没有别的更优雅的搞法呢
1783 次点击
所在节点    问与答
11 条回复
3dwelcome
2021-12-15 01:41:54 +08:00
建索引啊,还能有什么办法。

要查找速度上去,那就要看着这索引,建的好不好了。

至于具体算法,那就是 bloom filter 魔改。
dbsquirrel
2021-12-15 03:03:54 +08:00
让我想起了这个
https://v2ex.com/t/814478
murmur
2021-12-15 07:48:20 +08:00
具体场景是什么

什么叫普通的文本数据

如果是内部的数据库慢就慢呗 不能违背物理定律

如果是商业的 可以对热门词汇缓存
qping
2021-12-15 09:21:52 +08:00
百万条都加载到内存里,怎么匹配都快
dddd1919
2021-12-15 09:44:49 +08:00
ES 分词不好处理?中文上 IK 啊
changnet
2021-12-15 09:48:27 +08:00
精准匹配?用个字典树或者 acism ,百万的词库匹配起来都是毫秒级的,这在关键字过滤经常用
IsaacYoung
2021-12-15 09:57:12 +08:00
tire
murmur
2021-12-15 10:15:38 +08:00
@changnet 不是百万词库是百万记录...
lhx2008
2021-12-15 12:08:13 +08:00
不能分词的数据,现在就是直接字符完全匹配,类似 mysql 的 like %xxx%
lhx2008
2021-12-15 12:08:44 +08:00
小项目才能这么完,从数据库同步数据开销也很大的
abersheeran
2021-12-15 14:09:57 +08:00
radix tree 完事,只要内存能完全放得下,那搜索速度就和你数据量没什么关系。

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

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

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

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

© 2021 V2EX