【问题】
1、有 1001 个数字串(每个数字串长度不等,都是 0~9 之内),每一个数字串都和另外 1000 个中找出相同数最多和不同数最多的数字串(等于 1001 个数字数字串都要找一次)
2、就是如果第 1 行和第 1001 行都含有 1,算是相同数有 1 个;如果只有第 1 行数字串含有 1,而第 1001 行数字串没有,算是不同数有 1 个;
3、在数据库中用最少的步骤实现;
4、由于 1001 个数字串会每 3 分钟更新一次,因此要最快或者最少的步骤完成;
5、如果 1001 个成倍增长,变成 2001 个、7001 个,可以同样算法么?
【回答】
提问者需要逐条比较所有 1000 条字符串,甚至更多。用 Mongodb 没有提供这么复杂的运算,只能把数据读出来再处理,但用 Java 硬写比较麻烦,可以试试用集算器来处理,代码要简单些:
A |
B |
C |

本文介绍如何利用集算器解决在数据库中高效比较大量字符串相似性的问题。针对1001个数字串,需要找出与其他串相同数最多和不同数最多的串,集算器提供的解决方案相比Mongodb和Java硬编码更简洁。虽然性能会随数据量增加而增加,但在1000条数据测试中,集算器能在80秒到110秒内完成任务。
最低0.47元/天 解锁文章
678

被折叠的 条评论
为什么被折叠?



