基于LUCENE的多媒体文件检索系统的设计

摘 要:本文通过研究对Lucene框架及核心算法进行分析研究的基础上,通过插件的机制抽取多媒体文件中的标示性文本信息,利用Lucene对标示性文本进行索引构建及检索,在.NET平台及C#语言开发环境下设计并完成了一个多媒体文件的检索系统.

关 键 词:多媒体文件检索系统搜索引擎Lucene

计算机互联网技术的飞速发展,使得网页以及各种文本数字信息急剧增长,想要在海量的数据中便捷、迅速地搜索到所需要的信息将变得越来越困难.现在常用的搜索引擎软件主要用信息检索技术来解决搜索的问题.同时,随着多媒体技术的发展,大量的信息主要以非文本形式的多媒体文件形式存在.对于如何有效地检索这些庞大数量的多媒体文件具有重要的应用价值.

搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统.

一、lucene简介

Lucene是Apache软件基金会Jakarta项目组的一个子项目,也是一个开放源代码的搜索引擎工具包.它不是一个完整的搜索引擎,而是一个全文索引工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能,提供完整的查询和索引及部分文本分析功能.

初使用Lucene的使用者常错误地把它认为是一个可以马上使用的应用程序,即一个文件检索程序,或者是一个Web网络爬虫,以及一个Web站点搜索引擎[1],然而这些都不是它的实质.Lucene实际上是一个开发工具包的软件库,而非具备完整特性的搜索应用程序.纵然使得它只关注于自身的索引和搜索技术,并且非常好地完成这些程序.Lucene让你的应用程序处理业务规则,而把复杂的索引和搜索实现掩盖起来,只提供简单易用的API.

为了帮助理解,可以把Lucene当作层,应用程序位于它之上.现今,大量的应用都是利用Lucene对文本进行检索,而很少用来对多媒体文件进行检索.

二、Lucene的系统结构及模块功能

Lucene的系统主要分为三大部分:基础结构封装、索引核心以及对外接口[2].其中直接操作索引文件的索引核心又是系统的重点.

Lucene将所有源码分为七个模块:①Lucene.Net.Analysis:(词法分析器,主要用于切词,默认的语言为英语,提供德语与俄语的分析器.其它语言可通过扩展此类实现);②Lucene.Net.Documen(包含索引存储的各个单元:Document,Field等.);③Lucene.Net.Index(索引管理,包括索引建立、删除等.);④Lucene.Net.QueryParser(查询分析器,实现查询关 键 词间的运算,如与、或、非等.把查询语句转化成索引可理解的语句.);⑤Lucene.Net.Search(检索管理,根据查询条件,检索得到结果.);⑥Lucene.Net.Store(数据存储管理,主要包括一些底层的I/O操作.);⑦Lucene.Net.Util(一些公用类.包含一些公用方法和经过优化的数据结构.).

其中,Lucene系统重点的索引核心功能分为:创建索引和查询索引.这个两块功能主要的过程如下:①创建索引过程:Lucene.Net.Util使用Lucene.Net.Analysis对要索引文件的内容进行词法分析,并使用Lucene.Net.Util与Lucene.Net.Document把文本创建为索引并优化,然后交给Lucene.Net.Store处理,由Lucene..Store完成底层的I/O操作,把索引写入索引文件;②查询索引过程:用户输入查询语句,首先调用Lucene.Net.QueryParser对查询语句进行分析,并转化成索引可理解的语句.然后由Lucene.Net.Search根据查询语句检索索引,找到匹配的结果,并给每个结果一个匹配度分数,最后返回查询结果.这其中当然也涉及Lucene.Net.Util与Lucene.Net.Document这两个基础结构包的调用.

三、Lucene的算法

Lucene主要的算法有:归并算法、增量算法、查找算法[3].

1.归并算法

归并算法主要是合并找到需要的段:①已知各个段内的Term都是已排序的②用一个小根堆来表示存储各个段③堆中的顺序由段中当前第一个Term决定④取出当前堆中最小的元素写入新的索引段⑤从最小元素所在的段中删除该元素⑥重新调整堆.

2.增量算法

增量算法就是用于判断当前的索引中是否有需要合并的段.在创建索引过程中,存储的单位被称作段.一个段由几个文档组成,当段中的文档达到一定数量时就合并成一个新段.IndexWriter中的MergeFactory属性就是用于控制段的合并频率的,表示当有多少文档时就需要合并.

3.查找算法

查找算法又分为:分级查找、二分查找和顺序查找相结合的算法.该算法主要为:①把.tii文件调入内存②在内存中用二分查找找到相应的Block③把.tis文件中相应的Block调入内存④在Block中顺序找到相应的Term.

四、Lucene的开发环境

1..NETFramework.其支持生成和运行下一代应用程序和XMLWebServices的内部Windows组件.

2.C#.它是一种最新的、面向对象的编程语言[4].其使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域.

五、多媒体文件检索系统的概要设计

1.多媒体文件检索系统的架构

多媒体文件检索系统的设计最初是为软件开发人员提供一套完整的全文检索解决方案,让没有全文检索知识的开发人员在不用对自己程序做改动的前提下,快速地为自己的检索系统添加全文检索的功能.想要把全文检索嵌入到多媒体文件检索系统,查询部分必须做成接口,以便用户调用程序.但是,创建索引部分却可以独立出来,这样不但减少了全文检索系统对用户程序的影响,又可以让全文检索系统专注于索引,从而把它做得更好[5].本多媒体文件检索系统将提供三个查询接口:文件索引Web查询接口、文件索引桌面查询接口和数据库索引查询接口.其中,文件索引在Web系统与桌面系统中的使用有一定的区别,而数据库索引在所有的系统中查询都是一样的,所以只给出一个接口.为了使系统更容易被使用,系统将不使用任何数据库,而是用XML驱动系统的运行.


2.多媒体文件检索系统的业务流程

用户首先设置索引创建根目录,然后根据具体应用使用数据库索引或是文档索引,并作相应设置.

数据库索引需要配置数据库;选择要索引的表、列及类型;并对索引创建时间、速度、是否生成查询代码等数据库索引选项做设置.文档索引需要选择要索引的文件夹、文档类型,并对索引创建时间、速度、是否处理子目录等文档索引选项做设置.所有都设置好后,一切就交给索引服务器处理了.索引服务器一直运行于后台,并根据用户的设置,按时完成索引的创建,生成索引创建日志等.用户根据自己的应用类型,选择自己需要的查询接口,直接或是稍作修改后嵌入到自己的系统中,为自己的应用添加上全文检索的功能.这里的使用看似很方便,但它并非是独立的.它是以索引服务器完成相应索引的创建为前提的.如果索引服务器没有创建索引,将不能搜到任何东西.因此在使用接口前要启动索引服务器完成索引的创建.

六、结论

首先,对多媒体文件索引和检索技术的现状 450;其发展趋势作了介绍,对全文检索引擎工具包Lucene的相关技术进行了深入的研究,在对Lucene架构的研究基础上对索引方式进行了分析,并对Lucene的应用特点及其优势进行了深入的探讨.然后,分析了Lucene的基本工作原理,剖析了Lucene的体系结构及主要功能模块、部分关键算法分析.对多媒体文件检索系统的需求进行了分析,提出并设计了使用Lucene用来解决多媒体文件检索的方案.最后,通过Lucene对多媒体文件进行索引的构建及索引的查询,使用.NET平台及C#语言设计并完成多媒体文件检索系统.

类似论文

基于.NET的网络文件下载系统的设计

【摘 要】网络文件下载系统,是一种用户可以通过互联网登录网站进行数据上传、下载、共享等操作的信息数据存储空间 本次设计详细论述。
更新日期:2024-10-24 浏览量:132784 点赞量:28896

一种高效文件传输系统的设计与实现

【摘 要 】本文就企业集约化管理的需求,信息化集成平台的应用推广,使用集成平台处理业务、数据、信息已经渗透到企业安全、生产各个环节。
更新日期:2024-2-9 浏览量:10697 点赞量:4169

多媒体教室计算机系统的科学维护

收稿日期:2013-07-12 作者简介:郎烨(1960-),女,山西代县人,学士,工程师,主要研究方向:高等教育技术。
更新日期:2024-4-22 浏览量:58727 点赞量:13838

网络检索系统的

【摘 要】21世纪是信息的时代,第一时间掌握信息,就掌握了时代的脉搏 随着互联网的不断发展,人们对于信息的需求量。
更新日期:2024-6-21 浏览量:79973 点赞量:17202

全文检索系统在网站中的应用

摘 要:在分析全文检索原理及对比常见的全文检索系统的基础上,利用Ja应用开发接口设计了一个文献资源检索系统,实现了准。
更新日期:2024-4-3 浏览量:11147 点赞量:3886

城市建筑的多媒体信息发布系统

摘 要:本文介绍多媒体信息发布系统的基本组成,并重点通过对多媒体信息发布系统功能和特点的详细介绍,说明。
更新日期:2024-11-26 浏览量:144918 点赞量:31238