您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 开源搜索技术与FirteX检索平台
开源搜索技术与FirteX检索平台郭瑞杰中国科学院计算技术研究所ruijieguo@software.ict.ac.cn2007.4.1810:402/22大纲z搜索技术与开源平台–搜索技术简介–Lucene、Lemur等开源平台及相关工具介绍zFirteX-高性能全文索引与检索平台–为什么做FirteX?–使用FirteX–理解和扩展FirteX10:403/22大纲z搜索技术与开源平台–搜索技术简介–Lucene、Lemur等开源平台及相关工具介绍zFirteX-高性能全文索引与检索平台–为什么做FirteX?–使用FirteX–理解和扩展FirteX10:404/22CachingSearcherIndexer一个简单的搜索引擎体系结构采集预处理索引检索QuerycrawlerWebPageParseUserInterfacePageRankRepositoryAnchors&Links快照10:405/22CachingSearcherIndexerInvertedIndex预处理索引检索QueryWebPageParseUserInterfacePageRankWeb采集¾功能:9通过超链抓取Web网页,并定期更新。¾需要解决的问题:9获取尽可能多的页面9如何检测高质量页面?如何反spam?9如何高效准确地发现与剔除重复页面?9如何预测各类网页的刷新率?9如何获取Invisibleweb?¾开源工具:9Nutch(Java,)9OpenWebSpider(C,GPL,Win32/Linux)9Labin(GPL,C++,Linux)速度快:在标准PC机上5,000,000页面/每天的采集速度9Wget(C,GPL,跨平台)采集crawlerRepositoryAnchors&Links10:406/22CachingSearcherIndexer采集索引检索QuerycrawlerUserInterfacePageRankRepository页面分析和信息抽取¾功能:9分析页面,提取用于索引的信息:Title,Keywords,URL,Body,字体等9建立Linkmap9发现新的超链供采集器使用¾需要解决的问题:9BBS,社区,Blog,产品,新闻等等,页面是设计给人看的,结构特征各异,如何准确抽取有用信息?¾开源平台9无¾相关的开源工具:9Lib(C++,跨平台)9Lynx/Amaya/firefox9Xpdf(C++,跨平台)9Wv/Abiword(C++,跨平台)9Catdoc(C++,跨平台)预处理WebPageParseAnchors&Links10:407/22CachingSearcher采集预处理检索QuerycrawlerWebPageParseUserInterfacePageRankRepository全文索引¾功能:9建立索引以加速查询,目前使用昀广昀高效的是倒排索引,基本形式:¾需要解决的问题:9性能:如何在计算资源有限的情况下快速构建索引?9文档更新:倒排索引天生不适合文档的更新,如何支持文档的实时更新?9在线索引:产品,生活信息,新闻等更新非常快,如何做到实时索引的同时检索?9分布式:documentpartition,termpartition或者其他模式?大量计算资源的管理,容错(GoogleFileSystem,MapReduce,BigFile)TermIDDocNumDocIDTFPosPos…IndexerInvertedIndex索引Anchors&Links10:408/22Indexer采集预处理索引QuerycrawlerWebPageParseUserInterface检索CachingSearcherInvertedIndex检索PageRankRepositoryAnchors&Links快照¾功能:9利用建立的倒排索引,结合链接结构等信息处理查询,返回Top-k结果¾需要解决的问题:9效果:找到用户真正想要的东西?更好的IRModel,PageRank算法?9性能:如何快速处理Top-k查询?NewIndexstrategy,indexcompression,indexpruning?9处理link图非常耗时,更高效的算法?9Link-spam9是否有比链接分析更好的,spam免疫的方法?10:409/22开源检索平台—工程类zApacheLucene:(Java)–功能强大的搜索平台,包括全文索引和检索–支持增量、差量索引,支持各种文档索引支持多种检索方式。–架构和代码可读性非常好,堪称开源搜索引擎的的经典–Lucene的其他版本:zC++版(CLucene,非官方开发,代码可读性不是很好,bug也不少)zC#版(Lucene.net,纳入官方开发)zC版(Lucy,官方开发,还没有正式发布代码)–缺点:z性能较差:Java编写、实现算法z不太适合信息检索实验z对中文支持不是很好(仅提供单字索引)10:4010/22开源检索平台—工程类(cont.)zNutch(Java)–是LuceneProject的一个子项目,一个完整的搜索引擎,包括web采集,web内容分析,链接分析,分布式文件系统(Hadoop),索引和检索(采用Lucene)–可扩展,基于插件式架构:zURLNormalizersandFilters插件z网络协议插件(HTTP,FTP等)z分析器插件z索引和查询插件zHadoop(分布式文件系统)–基于GoogleFileSystem–采用Google提出的MapReduce10:4011/22开源检索平台—工程类(cont.)zYACY:基于P2P的分布式Web索引(Java)zHyperEstraier:支持P2P架构,开放式API,C开发,Linux/Windows平台zSwish-e:快速,灵活的开源搜索引擎,支持多种文件格式的索引.C开发,windows/linuxzSWISH++:基于Swish-e的文件索引和搜索引擎,C开发,Unix平台zZebra:结构化文本索引和检索系统,C开发,windows/Linux平台zht://Dig:完备的索引和搜索系统,针对domain和intranet,C++开发,Unix,Linux平台zXapian:C++开发,GPL10:4012/22开源检索平台—实验类zLemur:(C++,跨平台)–语言模型和信息检索的工具包,由麻州大学和卡内基梅隆大学合作开发–支持Unix,Linux,Windows等操作系统–Indexing、Retrieval、DistributedIR、DocumentClustering、Summarization、Simpletextprocessing等–缺点:仅仅是一个实验系统,索引数据库不具有移植性,性能较差,系统架构一般10:4013/22开源检索平台—实验类(cont.)zZettair(C,跨平台,来自RMIT大学)–JustinZobel,IR领域大牛zWumpus(C++,GPL,Linux,来自Waterloo大学)–主要定位:文件系统搜索–支持多用户,支持在线索引–功能强大,性能也不错–代码扩展性较差zTerrier(Java)–不能自由下载,需申请zMG–ManagingGigabytes:CompressingandIndexingDocumentsandImages10:4014/22大纲z搜索技术与开源平台–搜索技术简介–Lucene、Lemur等开源平台及相关工具介绍zFirteX-高性能全文索引与检索平台–为什么做FirteX?–使用FirteX–理解和扩展FirteX10:4015/22国内开源搜索平台的现状z国内,开源平台方面在FirteX之前是空白–工程应用上,大多基于Lucene架构,自主研发的不多–科学实验上,多数采用Lemur,修修补补,自己开发实验平台的很少,跟着别人走z现有开源平台存在的一些问题:–以Lucene为代表的工程应用类:z性能欠佳,处理的数据规模有限z不支持在线索引z对中文支持较差(单字索引,效率和准确率差)–以Lemur为代表的实验平台类:z仅限于检索模型方面和查询扩展等效果方面的实验z无法实现索引、检索算法,在线索引等性能方面的实验z对中文支持较差(单字索引,不符合中文特种)10:4016/22目标和动机公众搜索引擎检索模型新闻、产品搜索在线索引快速索引和检索算法研究实时文件系统搜索本地邮件搜索桌面搜索论坛搜索Top-k查询处理…查询扩展与反馈等FirteX(C++)工程应用:高性能搜索平台实验:完备的实验平台效果性能实时性大规模10:4017/22大纲z搜索技术与开源平台–搜索技术简介–Lucene、Lemur等开源平台及相关工具介绍zFirteX-高性能全文索引与检索平台–为什么做FirteX?–使用FirteX(1.0.3版,即将发布)–理解和扩展FirteX10:4018/22使用内置的Fxist和fxist4c工具10:4019/22配置文件-系统配置文件zConfig.xml—配置系统各个参数,以满足不同应用需求z标准的XML文件,UTF-8编码分析器参数索引参数:内存控制、索引词控制检索内存控制索引合并策略高级参数:倒排索引的内存分配策略日志记录:记录级别和输出位置10:4020/22配置文件-用户参数文件z配置一次索引任务的各个参数值,可以覆盖系统配置参数zXML格式,本地编码z以搜狗公司提供的互联网语料为例,文档一gz压缩形式存放在文件目录中,其文件格式如下:docurl…/content/docdoc…./doc10:4021/22配置文件-用户参数文件(cont.)定义collection类型和参数定义parser类型和参数定义analyzer类型和参数定义索引参数10:4022/22配置文件-用户参数文件(cont.)定义文档的模式,各个字段的类型和索引属性,类似于数据库中的字段类型定义10:4023/22使用参数文件建立索引z利用fxist4c(跨平台)–fxist4cargfile.xmlz使用Fxist(Windows平台):10:4024/22FirteX使用-建立索引代码:z支持:目录、TREC、gz压缩的TREC、天网格式、文件列表、FirteX格式等;z所有的配置参数均在用户参数文件中定义CIndexWriter::buildIndex(_T(“argfile.xml”));10:4025/22FirteX使用-建立索引(cont.)展开:1try2{3CArgumentarg;4arg.parseArg(_T(“argfile.xml”));5CCollection*pCol=CIndexWriter::prepareBuildIndex(&arg);6pCol-scan();7deletepCol;8}9catch(CFirteXException&fe)10{11printf(buildindexfailed:%s,fe.what());12}打开参数文件根据参数创建索引所需的各个组件对象扫描文档集,建立索引10:4026/22FirteX使用-建立索引(cont.)使用底层接口:1try2{3CDocumentSchemaschema;4schema.addTextField(_T(
本文标题:开源搜索技术与FirteX检索平台
链接地址:https://www.777doc.com/doc-5938460 .html