- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
千万级FTP搜索引擎数据库索引设计方法探讨
千万级FTP搜索引擎数据库索引的设计方法探讨
摘 要: 本文介绍了基于LINUX操作系统的千万级FTP搜索引擎(Sparrow Search)的框架结构,着重探讨了数据库索引的设计方法,针对提高索引检索效率和压缩比率的问题,本文提出了具体方案并给出了实验结果。
关键词:FTP 搜索引擎 数据库 索引
引言
FTP搜索引擎是对因特网上FTP服务器的信息资源进行检索和管理的一类检索系统机制[1],数据的检索过程并不需要搜索整个因特网,只需处理预先整理好的FTP目录信息数据库。FTP搜索引擎的功能是搜集匿名FTP服务器提供的目录列表,对用户提供文件信息的查询服务[2]。与相对众多的WWW搜索引擎相比,功能强大的FTP搜索器并不常见,由此限制了人们对具有大量信息与资源的FTP站点的访问。实现一个高速、海量、功能强大而又基于Web的FTP搜索引擎将为网络用户提供极大方便[3]。
根据搜索引擎的工作原理,可将搜索引擎的实现过程分为三步:在因特网上抓取FTP目录信息 → 建立索引数据库→在索引数据库中搜索排序[4]。本文着重讨论建立索引数据库过程中索引的设计与实现方案。
1. FTP搜索引擎的框架结构
Sparrow Search采用的是独立型搜索引擎,即拥有自己的索引数据库,检索在本地数据库中进行,并根据数据库的内容提供相关信息或站点链接。图1是FTP搜索引擎的框架结构图。
用户在客户端使用网页浏览器进行数据查询,当用户键入查找关键字并提交时,Web服务器通过调用CGI程序在索引数据库中进行搜索。数据采集机器人(spider)自动提取各个FTP站点的文件和目录信息并按照一定格式和策略进行存储,从而生成索引数据库。
2.数据库索引数据库的设计
FTP搜索引擎数据库索引设计由三部分组成:原始索引、压缩索引、整合索引。
2.1 建立原始索引
建立索引的方法采用倒排表技术,即数据库的索引被设计成基于单字符(汉字)的倒排表的形式,字符种类的个数决定有多少倒排表文件。每个倒排表文件以某个字符(英文字母或汉字)命名,保存的是该字符(英文字母或汉字) 在数据库中每次出现的位置信息,???于有些字符无法在操作系统中作为文件名,如星号、冒号等,Sparrow Search中规定了只有汉字和特定字符,如:0-9、a-z、A-Z可以被索引。虽然在支持中文的LINUX 操作系统上汉字可以作为文件名,但考虑到兼容性问题,没有直接用汉字作为文件名,而是把汉字的16位编码转换成为4位16进制无符号数来作为文件名。这样在不支持汉字的LINUX 操作系统上也能够处理汉字的索引问题。
索引结构如图2所示。每条索引由32位(4字节)构成,其中高24位用于表示该字符所在的记录编号ID,低7位用于表示该字符在记录内的位置偏移量,中间一位暂时保留,以备后用。
当用户检索FTP目录信息时,希望得到一类文件,而不是一种文件。如用户希望查找所有图像文件,需要用户输入图像文件的扩展名并不方便,因此可在服务端对文件进行分类,将FTP中的文件名分为为图像、视频、音乐、文档、程序等,将其分别进行索引,有利于提高检索效率。
大多数FTP服务器上文件名(不含扩展名)或目录名会采用过于简单的字符表示,但用户检索时无法从信息量较小的字符中检索希望得到的信息。如目录结构/office2000/a/b.exe,仅仅对a和b.exe做索引没有太大意义。在Sparrow Search中,除了文件名本身以外,对其若干外层目录名也编上索引。但增加索引量又会使数据库索引文件剧烈增大。经过实验,每增加一层目录名的索引量,索引文件的大小会增加60%甚至更多。Sparrow Searc采用的方法是:一旦发现文件名的长度过短就将其外层目录名编入索引。同样,若外层目录名仍过短,再将其外层目录名编入索引,……极端情况下,对文件的全路径编制索引。
2.2 索引的压缩存储
增加索引的字符数量会使索引文件的大小成比例增加,即便是只对文件名本身索引,海量的原始信息量仍对索引文件的存储空间构成了极大的威胁。经过实验,在不压缩并对文件相邻外层目录编入索引的情况下,1千万条记录所生成的索引文件的大小超过600MB。考虑在数据库中的数据有这样的规律:大量名字相仿的文件记录会集中在一起,因为它们都被放在服务器的同一个目录下,这意味着文件名中字符或汉字会重复编入索引。
对比原有索引结构,可以将高16位相同的索引编在一起,用2个字节保存,称为基底Base;再用2字节保存高16位相同的索引的个数,即偏移总数N;用2个字节保存原索引结构中的后两个字节的内容,即偏移。索引压缩方法示例如图
文档评论(0)