急求:url检索问题 问题: 现有三千万url,放在一个文本文件中大小大概2G,最长的url有几千个字节,请问如果要检索几亿次,如何组织,使用什么技术,才能超快的判断一个给定url是否在这三千万url的集合中?备注:机器内存< 2G 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 物理拆分, mwrk ,分别是什么意思啊?目录加索引我也想过,还考虑过用hash映射,但是你总得读一部分数据到内存吧,而我们查找时,url在那个目录里面都是随机的,如果频繁的把数据从内存里调入调出是不是很影响速度,比较得查上亿次啊 我们做的东西,一般不用数据库,好像用数据库管理一般比自己组织文件来管理要慢10倍以上,而且导入到数据库后,数据的存储空间会扩大很多倍,不知道是导入出了什么问题,对数据库不是太熟。现在主要问题不在于数据结构,不过大家建议的数据结构都挺好,而是数据量太大,不能一次性导入内存,所以如果频繁的导入导出内存会非常影响速度,即使模拟操作系统里的内存管理机制还是很慢,因为url是随机的。 导入库中, 用sql 语句查询, 方便. 这个存放url文件的内容是否可以由你控制?如果可以,可以考虑把url与在文件中的行数联系起来.比如:每个urlString肯定对应一个hashCode,这个hashCode肯定对应一个整数,比如为3000.那么就把这个url放到这个文件的第3000行中.每次存取的时候,只需要根据hashcode直接取第3000行的内容就行了,取出来比较.如果有hash冲突,可以用hash算法处理这个问题. laughsmile(海边的星空), 你的方法好像可行,不过我还想问一下,随机访问一个文件得某一行慢不?毕竟文件里有3000多万行,另外,现在我门的url已经在一个文件中了,怎么能读出来后按hashCode的行存储呢,因为url的长度变化很大。非常感谢大家的回复! 多种方法结合起来1利用一种规则把所有url分成1000类,分别放在1000文件里规则可以自己设计,比如取后5个字符asc码相加,再取最后四位,决定此url分配在哪个文件2利用hash表确定某个url在文件的行数 不知道Lucene是否可以满足你的要求呢? Blue_Sea_2001(蓝色大海) 2利用hash表确定某个url在文件的行数,2这个不知道该如何实现?现在所有url都在一个文件中,分类容易, 但把url分类后如何按HashCode存放在指定文件的HashCode行啊?你总不能没一行都指定一样的长度吧,这样会非常浪费空间。 方法1:把内容按照规则分布到多个数据库表中,表名对应一个hashcode范围,根据待查询的url的hashcode的范围就可以知道查询哪一个表了.如果设置了索引,应该很快就可以查到方法2:把内容按照规则分布到多个Xml中,文件名对应一个hashcode范围,根据待查询的url的hashcode的范围就可以知道查询哪一个Xml了,然后使用XQuery来进行查询 java树的拆分 求教:分段读取视频文件.... swing关闭窗口问题 求救:解释xml格式字符串出错 在MyEclipse中运行debug,为什么变量值总是显示为null? 终于鼓起勇气认真学习JAVA了,先散点分混个脸熟,各位帮忙捧捧场吧~~~ 各位,我怎么把一个字符型的数字,造型成一个浮点型呢? :)各路神仙帮帮忙,关session的问题?? 用JAVA编写一个邮件程序,要能收能发能开用户 关于继承的问题 线程 在线等 没分了,希望好心帮助下 在Java中怎么实现类似管家婆中产品选择使用键盘操作的目的?
目录加索引我也想过,还考虑过用hash映射,但是你总得读一部分数据到内存吧,而我们查找时,url在那个目录里面都是随机的,如果频繁的把数据从内存里调入调出是不是很影响速度,比较得查上亿次啊
现在主要问题不在于数据结构,不过大家建议的数据结构都挺好,而是数据量太大,不能一次性导入内存,所以如果频繁的导入导出内存会非常影响速度,即使模拟操作系统里的内存管理机制还是很慢,因为url是随机的。
如果可以,可以考虑把url与在文件中的行数联系起来.
比如:每个urlString肯定对应一个hashCode,这个hashCode肯定对应一个整数,比如为3000.那么就把这个url放到这个文件的第3000行中.每次存取的时候,只需要根据hashcode直接取第3000行的内容就行了,取出来比较.如果有hash冲突,可以用hash算法处理这个问题.
另外,现在我门的url已经在一个文件中了,怎么能读出来后按hashCode的行存储呢,因为url的长度变化很大。
非常感谢大家的回复!
1
利用一种规则把所有url分成1000类,分别放在1000文件里
规则可以自己设计,比如取后5个字符asc码相加,再取最后四位,决定此url分配在哪个文件2
利用hash表确定某个url在文件的行数
2
利用hash表确定某个url在文件的行数,
2这个不知道该如何实现?现在所有url都在一个文件中,分类容易, 但把url分类后如何按HashCode存放在指定文件的HashCode行啊?你总不能没一行都指定一样的长度吧,这样会非常浪费空间。
把内容按照规则分布到多个数据库表中,表名对应一个hashcode范围,根据待查询的url的hashcode的范围就可以知道查询哪一个表了.如果设置了索引,应该很快就可以查到
方法2:
把内容按照规则分布到多个Xml中,文件名对应一个hashcode范围,根据待查询的url的hashcode的范围就可以知道查询哪一个Xml了,然后使用XQuery来进行查询