问题描述:
母串:有四万个字符串,已经放到数据库中。
子串:有6万多个字符串也放到了数据库中。
现在需要把6万子字符串,与4万个母字符串里面的母串字符串进行匹配,检索出成的字符串。每个子串的长度一百到万不等,每个母串的长度一百到几十万不等。
每个存放子串的记录中有母串在数据库中的编号……我的做法是:
读出所有子串,然后循环:从子串中读取母串编号,读出母串,然后用java的 indexof(String str )进行比较,成功的写入数据库。
因为数据量多,而且字符串太长,特别是用indexof(String str)判断的时候,非常耗时。
所以,即便我用了1000条线程进行操作,还是很慢……三个小时才比对了不到4000条数据…… 请问有没有大侠有好的方法啊……
小弟感激涕零啊…………
母串:有四万个字符串,已经放到数据库中。
子串:有6万多个字符串也放到了数据库中。
现在需要把6万子字符串,与4万个母字符串里面的母串字符串进行匹配,检索出成的字符串。每个子串的长度一百到万不等,每个母串的长度一百到几十万不等。
每个存放子串的记录中有母串在数据库中的编号……我的做法是:
读出所有子串,然后循环:从子串中读取母串编号,读出母串,然后用java的 indexof(String str )进行比较,成功的写入数据库。
因为数据量多,而且字符串太长,特别是用indexof(String str)判断的时候,非常耗时。
所以,即便我用了1000条线程进行操作,还是很慢……三个小时才比对了不到4000条数据…… 请问有没有大侠有好的方法啊……
小弟感激涕零啊…………
在匹配算法上进行优化 KMP算法
比如说
SELECT c.id, c.text, p.text FROM test.child c
left join test.parent p on c.pid = p.id
where p.text like concat('%',c.text,'%')
怎么语无伦次的```从新写了一遍 o(╯□╰)o用java 的话 可以试试 查hash表 并且要 保存中间值 速度非常可观 (前提是 母串 要有 子串组成) 如果不是的就要 在加入到数据库的时候进行 分析 生成 可供查找的 索引或者编号 毕竟 存 不注重速度 而取出 我们能感觉到 速度
可是我用的是mysql数据库……
qwerqwerty 第三次 qwerty 已经出来结果了 还有就是1000个线程 只会减慢 运行速度`! 线程上下文切换需要时间 因为你根本没有那么多 cpu 我不知道 为啥 你老师 让你用c 求教
还是建议 楼主 查查 mysql文档 听从 楼上 各位的 简单 建议