在搜索引擎的技术中,索引是一项很复杂的技术,索引文件具有以下特点:
(1)文件异常大,一般都是TB级别的文件。
(2)文件只读不写,索引仅仅用来查询,只有只读操作。
(3)索引文件的更换并不频繁。
(4)文件需要快速读取
首先我们希望索引文件具有以下性质
(1)索引文件在磁盘上尽可能连续存放
索引文件随机读的部分基本都在内存中,倒排表在磁盘中,倒排表均为顺序存放,因此索引文件可以看做是顺序读的情况。
一个大文件即便是顺序地访问,但由于文件系统在分配是分配在不同的磁盘块中,也会导致看上去顺序的访问,其实是随机访问,磁盘的寻道时间不可避免,磁盘读取的优化,例如缓存,预取等都无法享受到。关于预取可以参考下面的推荐阅读。
ext2文件系统有限的支持了continuous block的功能,能够尽可能的将文件分配在一个group中,但是对于索引文件这个大家伙来说,价值有限。
因此,索引文件可以考虑存放在裸设备上,据了解oracle在使用裸设备作为存储介质,性能提升50%。相关内容参考推荐阅读。
(2)索引文件的制作代价可控,出错可弥补
过大的索引文件,访问效率不高,且重建代价高,如果数据异常重做代价高。
因此索引分层,索引分段的制作是非常必要的。
(3)索引文件能够支持快速读取(随机读,顺序读)
通常采用mmap的方式进行读取。
文件碎片(空洞文件)的介绍:http://en.wikipedia.org/wiki/File_system_fragmentation
ftruncate函数的说明:http://opengroup.org/onlinepubs/007908799/xsh/ftruncate.html
Sparse file(稀疏文件,和空洞文件时一回事):http://en.wikipedia.org/wiki/Sparse%5Ffile
文件预取:http://linux.chinaunix.net/techdoc/system/2008/09/13/1032255.shtml
ext2文件系统的设计原理:http://frankdrews.com/public_filetree/cs458_558_SQ03/studentpapers/patelhimanshu.pdf
http://e2fsprogs.sourceforge.net/extensions-ext23/
oracle使用裸设备的性能提升50%:http://www.remote-dba.net/t_oracle_9i_administration_26_disk_raw_devices.htm
C++读取mmap提速测试:http://www.byvoid.com/blog/fast-readfile/
AIO(异步IO)相关http://www.ibm.com/developerworks/cn/linux/l-async/
文件大规模写入调优:http://www.westnet.com/~gsmith/content/linux-pdflush.htm
分享到:
相关推荐
总共有3个文件包。请大家找我名字获得。 三个文件包下载完后即可解压了。 深入搜索引擎:海量信息的压缩、索引和查询 高清PDF完整版 适合搜索引擎SEO人员的阅读提高
财经新闻搜索引擎 从财经新闻网页数据开始,进行正文提取、中文分词、倒排索引构建、执行搜索和UI。 要求技术:MapReduce或Spark;执行搜索和UI采用Spark或Java 步骤: (1)新闻正文提取,采用正则表达式提取指定...
《深入搜索引擎:海量信息的压缩、索引和查询》是斯坦福大学信息检索和挖掘课程的首选教材之一,并已成为全球主要大学信息检索的主要教材。《深入搜索引擎:海量信息的压缩、索引和查询》理论和实践并重,深入浅出地给...
NULL 博文链接:https://snowdymy.iteye.com/blog/1075916
使用C sharp开发搜索引擎 C#搜索引擎开发实战 07-提取文件(共14页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 08-文本排重(共28页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 09-提取关键词(共16...
使用C sharp开发搜索引擎 C#搜索引擎开发实战 07-提取文件(共14页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 08-文本排重(共28页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 09-提取关键词(共16...
用java写的windows下的文件搜索程序,底层索引存储采用bst(二叉排序树),构造索引时采用深度递归算法(偏慢),只支持对文件的索引,不支持对文件夹的索引,采用jnotify监听文件的新建,修改,删除和重命名,同时自动...
摘 要 倒排文件是搜索引擎检索系统普遍采用的索引技术。针对中文搜索引擎中采用自动分词的全文检索因分词词 典规模小导致的检索效率下降与词典规模扩大导致检索效果下降的矛盾, 论文在天网搜索引擎的实践基础上, ...
使用C sharp开发搜索引擎 C#搜索引擎开发实战 07-提取文件(共14页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 08-文本排重(共28页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 09-提取关键词(共16...
3.app.py运行搜索引擎 4.在默认浏览器输入 http://localhost:8080/ 进行检索 若要使用数据库 1.writeDB.py写倒排索引与idf(时间较长) 2.可以在summary.py切换from DB_search import s使用数据库 注意: ...
Risearch是全文搜索引擎脚本,它把所有的关键词都编成一个文档索引除了配置文件里面的定义排除的 关键词。 RiSearch使用经典的反向索引算法(与大型的搜索引擎相同),这就是为什么它会比其它搜索引擎快的原因。
前台搜索时,通过读取索引文件查询,避免了传统数据库查询在高并发及海量数据下的性能问题。因前台搜索不在连接数据库,为不希望数据库放到前台的特殊用户群体提供了数据快速查询解决方案。 +安装说明+ 本系统...
2.3 商业搜索引擎技术介绍 17 2.3.1 通用搜索 17 2.3.2 垂直搜索 18 2.3.3 站内搜索 19 2.3.4 桌面搜索 21 2.4 本章小结 21 第3章 获得海量数据 22 3.1 自己的网络蜘蛛 22 3.1.1 BerkeleyDB介绍 27 3.1.2 抓取网页 ...
使用C sharp开发搜索引擎 C#搜索引擎开发实战 07-提取文件(共14页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 08-文本排重(共28页).ppt 使用C sharp开发搜索引擎 C#搜索引擎开发实战 09-提取关键词(共16...
行业分类-设备装置-应用于搜索引擎的海量文件异步索引及读写方法.zip
java实验1-实现搜索引擎的倒排索引数据结构 实验1知识点: 集合类的使用如ArrayList,HashMap ◦对这些集合类的操作包括:遍历、添加、排序,得到集合的大小、判断集合里是否已存在指定元素 第三是熟悉对象的序列...
淘特站内搜索引擎是由淘特JSP搜索引擎发展而来,系统基于Lucene.Net核心,通过高效的中文分词算法将数据库中内容进行分析、索引并保存至硬盘中。前台搜索时,通过读取索引文件查询,避免了传统数据库查询在高并发及...
Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。 (2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升...
总共有3个文件包。请大家找我名字获得。 三个文件包下载完后即可解压了。 深入搜索引擎:海量信息的压缩、索引和查询 高清PDF完整版 适合搜索引擎SEO人员的阅读提高
关于搜索引擎的另一种数据结构,Bing必应重新定义的签名文件。