firtex-highperformancefullfeaturedtextsearchenginelibrary

上传人:小** 文档编号:57447733 上传时间:2018-10-22 格式:PPT 页数:32 大小:1.39MB
返回 下载 相关 举报
firtex-highperformancefullfeaturedtextsearchenginelibrary_第1页
第1页 / 共32页
firtex-highperformancefullfeaturedtextsearchenginelibrary_第2页
第2页 / 共32页
firtex-highperformancefullfeaturedtextsearchenginelibrary_第3页
第3页 / 共32页
firtex-highperformancefullfeaturedtextsearchenginelibrary_第4页
第4页 / 共32页
firtex-highperformancefullfeaturedtextsearchenginelibrary_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《firtex-highperformancefullfeaturedtextsearchenginelibrary》由会员分享,可在线阅读,更多相关《firtex-highperformancefullfeaturedtextsearchenginelibrary(32页珍藏版)》请在金锄头文库上搜索。

1、FirteX高性能全文索引和检索平台,中科院计算所 智能软件部 信息智能中心 郭瑞杰 2006.6.21,Outline,FirteX介绍 已有平台介绍 Lucene、Lemur等 FriteX的架构 FirteX的具体实现 索引、索引存储和检索 FirteX VS Lucene&Lemur 结论和进一步工作,FirteX介绍,开放式架构: 采用标准C+实现,支持Windows,Unix-like 操作系统; 实验和工程的通用平台,不仅是一个检索系统,同时也是一个全文索引和检索框架 多个组件基于插件设计,不仅可以采用C/C+对系统进行扩展,也可以通过内置的跨平台COM库设计COM组件来扩展系

2、统 。 功能: 支持增量索引,差量索引,多字段索引,提供了3种前向索引方式; 支持纯文本,HTML,PDF等文件格式; 提供快速中文分词; 从底层到高层,提供了多种索引访问接口,灵活自由地使用索引文件; 提供丰富的检索语法,支持多字段检索,日期范围检索,检索结果自定义排序等。 性能: 在Pentium 4 2.8G 2GRAM的机器上超过200Mb每分钟的索引速度 在近7G的索引文件(100G网页,11G纯文本的索引)上检索,仅使用十几M内存在数毫秒内返回查询结果; 支持Tb数量级的文本索引和检索 灵活性: 对于简单的使用者: 直接提供了多种文件格式解析器(HTML,PDF,WORD等); 系

3、统采用类似于XML格式的配置文件,可以根据数据集和机器配置情况,灵活配置整个系统,无需编写代码。 对于研究人员: 提供了TREC文档集解析器; 检索模型易于扩展; 提供了3种前向索引方式,可以直接用来做文本分类、聚类,摘要等 实验; 对于开发者: 系统各组成部分耦合性低,从应用层模块到系统核心层模块,均可单独修改、升级或替换;扩展既可以在源代码上直接进行,也可以使用非C/C+语言通过COM组件扩展,Lemur: 采用C+开发的一个语言模型和信息检索的工具包 支持Unix,Linux,Windows等操作系统 主要针对研究领域,包括全文索引、检索、分布式信息检索、文档聚类,摘要等 全文索引部分包

4、含InvIndex、InvFPIndex、KeyfileIndex和Indri 四种索引方式 支持多种检索模型,用户也可以比较容易扩展自己的检索模型 能够很方便地搭建自己的信息检索实验平台,实现各种信息检索模型或其他文本处理实验,已有平台介绍Lemur,采用动态词典,将词编码成数字ID序列 动态词典容易膨胀,不同文档集建的索引无法兼容 采用了内存池,先在内存中建索引,再写至磁盘 内存中没有压缩,中间临时文件无法提供检索(InvFPIndex) 架构并非是开放式的,索引部分不易扩展 用户很难扩展新的索引算法,索引压缩算法等 没有考虑太多的性能问题,不能满足一些对索引和检索时效性比较高的应用 虽然

5、能够支持中文,但是还不够充分,只提供了单字切分,使用者还必须做很多分词的工作。,已有平台介绍Lemur(续),Lucene: 用Java开发的文档索引和检索系统 针对Web应用的,提供了简单的编程接口,但是功能强大 支持增量索引、多字段索引,支持各种文档格式(html,pdf,word,mp3等),也提供了丰富的查询功能; 支持多语言,也可以编写解析器(Analyzer)扩展支持其他语言 应用广泛,chinabbs,苹果的iTunes,微软的Outlook搜索插件等就是用Lucene架构的 Lucene的其他版本: C+版(CLucene,非官方开发,代码可读性不是很好) C#版(L,非官方开

6、发) C版(Lucene4C,官方开发,还没有正式发布代码),已有平台介绍Lucene,缺陷: 性能较差,不能满足性能要求较高的应用 Lucene是由Java语言实现的,Java的解析执行方式限制了Lucene的性能 为了通用性和简化实现复杂度,Lucene把所有的索引字段都作为字符串来处理,采用共享前缀存储,虽然采用了一些技巧来加快搜索速度,但是这种存储方式在根本上决定了Lucene的性能不可能做得很高,处理的数据规模也不可能很大 Lucene的部分索引算法、索引合并算法和检索算法不够高效 Lucene主要面向实际应用,在研究领域,要使用Lucene做实验还是比较困难和麻烦的 对于中文支持不

7、是很好,目前官方只提供了简单的单字切分的分析器。,已有平台介绍Lucene(续),Nutch Java开发,是Lucene Project的一个子项目,一个完整的搜索引擎,包括web采集,web内容分析,链接分析,分布式文件系统(NDFS),索引和检索(采用Lucene) 可扩展,基于插件式架构: URL Normalizers and Filters 插件 网络协议插件(HTTP,FTP等) 分析器插件 索引和查询插件 NDFS(Nutch Distributed File System) 基于Google File System 采用Google提出的MapReduce,已有平台介绍Nut

8、ch,Hyper Estraier :支持P2P架构,开放式API,C开发,Linux/Windows平台 Swish-e:快速,灵活的开源搜索引擎,支持多种文件格式的索引. C开发,windows/linux SWISH+ :基于Swish-e 的文件索引和搜索引擎,C开发,Unix平台 Zebra :结构化文本索引和检索系统,C开发,windows/Linux平台 ht:/Dig :完备的索引和搜索系统,针对domain和intranet,C+开发,Unix,Linux平台 WIRE 包含采集器,全文索引和检索,索引部分集成Swish-e YACY:基于P2P的分布式Web 索引(Java

9、),已有平台介绍 Hyper Estraier 等,Application,Index Access Component,Index Reader,Analyzer,Index Searcher,Index Component,Word Indexer,URL Indexer,Other User Indexer,Storage Component,Disk Storage,RAM Storage,ClusterStorage,Index Writer,Parser,Collection,FirteX架构,Storage Layer,FirteX索引流程,Web Collection,Dir

10、Collection,Distribute Collection,.,HTML Parser,PDF Parser,WORD Parser,.,Analyzer (Pluggable),Word Indexer,Name Entity Indexer,URL Indexer,.,Indexer Aggregator (Pluggable),Chinese, English word,Name Entity,URL,Any other data type,Index Repository,Parser Aggregator (Pluggable),HTML,PDF,WORD,增量索引算法FXII

11、(FirteX Incremental Indexing Algorithm) 类哈夫曼索引合并算法(Huffman-like Index Merge) 包含一个或多个字段索引组件(Field Index Component) 字段索引组件实现具体字段(例如正文字段,URL字段,日期字段等)的索引建立、合并和检索功能,包含三个主要组成部分:字段索引器、字段索引合并器和字段索引检索器,分别对应上述三个功能 该组件是可扩展的,FXII算法和HIM算法独立于具体的字段索引组件,用户实现的字段索引组件不用做额外的工作就可以具备快速索引和增量索引的特性。 目前实现的字段索引组件包括Word Index

12、Component(中、英文正文字段)、Date Index Component(日期字段)和URL Index Component(URL字段),索引组件(Index Component),FXII增量索引算法,12 5 21 4 32 8 10 2 ,.,内存中,lexicon,Posting Lists,index barrels,barrel,barrel,barrel,barrel,差量编码,变长压缩,内存不足,写至磁盘,清空内存缓冲,.,.,.,.,.,.,.,HIM索引合并算法,2(1-2),1,5(3-7),2,1(8),3,3(9-11),4,2(12-13),5,2(14-

13、15),6,8(16-23),7,6(24-29),8,9(30-38),9,11(39-49),10,30,31),31,32),32,33),mergeFactor=3,2(1-2),1,1(8),3,2(12-13),5,6,2,4,7,8,9,10,30,31),31,32),32,33),5(1-5),11,13(1-13),12,33(1-33),13,barrels,mergeFactor=3,FXII增量索引算法(续),索引压缩 采用整数变长编码压缩(也叫RVL压缩编码) Posting-list的一般形式是:df d, o差量编码后压缩,f直接压缩 优点:压缩和解压缩速度非常

14、快,而且支持局部解压缩 ;缺点:压缩率不太高,压缩后的索引大小一般是原始文档的50%左右 Lucene和Lemur均采用此压缩方式 索引存储 相当于FirteX的虚拟文件系统,具有数据存储、读取和修改等接口,而具体的数据存储方式,存储位置,和压缩算法对于上层的索引组件来说是透明的; 用户可以针对特定的应用需求,使用或设计特定的存储部件 目前实现的存储组件有磁盘存储组件,内存存储组件和内存映射存储组件 此部分设计与实现与Lucene基本相同,Lemur不具备此功能,索引存储组件(Storage Component),索引检索(Index Search) FirteX的检索系统,目前支持的检索类型

15、有句子检索,布尔检索和时间日期检索等,可分字段检索 索引生成(Index Writer) 是一个连接部件,将应用层的Analyzer组件的分析结果输入到索引组件,由各个字段索引器进行索引,此外,也提供了索引添加、合并、删除等访问接口 索引读取(Index Reader) 是一个代理组件,仅仅封装索引组件的只读访问接口,不提供任何写和修改的接口,以防用户的误操作破坏索引数据,索引访问组件(Index Access Component),FirteX的检索架构,Index Searcher,Query Parser,Analyzer,Weight (Extensible),Similarity (

16、Pluggable),Scorer (Extensible),Term Reader,Query Hits,Filter (Pluggable),Sorter (Pluggable),Index Repository,查询q,Query,idf,tf,postings,filter, sort,FirteX的检索架构类似于Lucene的检索架构,不同点在于词汇表检索算法和Scorer的核心算法(跳跃式有序向量相交算法和posting-list检索算法等) Scorer、Similarity、Weight、Filter和Sorter部件都是用户可扩展的,用于控制检索系统的检索结果排序 Scorer、Similarity和Weight三个部件组合,可以实现目前绝大部分检索模型,便利检索效率和检索模型实验。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 宣传企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号