首页 新闻 会员 周边

数据采集时对已采集过的信息怎么处理?

0
悬赏园豆:15 [已关闭问题] 解决于 2013-10-23 13:51

如题,最近想学习这方面的知识,想问下当数据采集时,假如发现已经采集过了如何处理?每次插入前判断是否存在吗?但是我感觉这样不这么好,很多存在的重复采集太浪费资源了吧?求大神赐教好的办法!

vksay_hyc的主页 vksay_hyc | 初学一级 | 园豆:34
提问于:2013-10-22 17:24
< >
分享
其他回答(2)
0

不判断怎么知道有没有采集过?

收获园豆:1
angelshelter | 园豆:9887 (大侠五级) | 2013-10-22 17:41

我现在就是没想到应该怎么判断才好,还有就是判断存在后是否继续往下采集..

支持(0) 反对(0) vksay_hyc | 园豆:34 (初学一级) | 2013-10-23 09:15
0

提问时,别着急,先把问题描述清楚。

你说假如发现已经采集过了,当你得到一条信息时,你如何判断是已经采集过的呢?
其次,写入前判断的问题,其实还是一样的问题,你如何判断这是一条已经采集并存储了的信息?

这里,采集和存储是两个过程。要么在采集的时候,比对已经存储的数据;要么先采集,再来比对哪些数据需要存储。两种方法都有很大的运算量。

因此,你应该考虑一下逐一比较以外的办法,比如时间标签之类的。

收获园豆:2
飞扬的尘埃 | 园豆:1318 (小虾三级) | 2013-10-22 17:50

我现在想到的就是把所有唯一标识保存到库或者程序中,这样每次采集的结果在拿出来判断,还有就是一般采集的都是从新到旧,当触碰到旧的数据发现重复时,是否要停止采集?求比较好的判断解决方案.

支持(0) 反对(0) vksay_hyc | 园豆:34 (初学一级) | 2013-10-23 09:17
0

当然要判断了,不过这个判断已经是很成熟的算法了,参看布隆过滤器:http://www.dbafree.net/?p=36 。

收获园豆:2
天方 | 园豆:5407 (大侠五级) | 2013-10-22 21:09

多谢链接,看了下正好就是我想要的东西, 只不过示例代码的Java写的,在C#里面没用过那东西,感觉跟List的集合一样的,那样在下次启动程序时是否会丢失?本人新手,如表述不清望海涵。

支持(0) 反对(0) vksay_hyc | 园豆:34 (初学一级) | 2013-10-23 09:24

多了,还有我现在的一个就是存到数据库中,但是就是感觉存数据库中,每次爬都需要重新查询一次,效率肯定不行,随着时间的增加数据越来越大,查询也会更慢,那程序不也越来越来,但是存哪里面安全,不会重复,重新启动程序也不会丢失。

支持(0) 反对(0) vksay_hyc | 园豆:34 (初学一级) | 2013-10-23 09:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册