论文部分内容阅读
摘 要:本文通过研究对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.net.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..NET Framework 。其支持生成和运行下一代应用程序和 XML Web Services 的内部 Windows 组件。
2.C#。它是一种最新的、面向对象的编程语言[4]。其使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
五、多媒体文件检索系统的概要设计
1.多媒体文件检索系统的架构
多媒体文件检索系统的设计最初是为软件开发人员提供一套完整的全文检索解决方案,让没有全文检索知识的开发人员在不用对自己程序做改动的前提下,快速地为自己的检索系统添加全文检索的功能。想要把全文检索嵌入到多媒体文件检索系统,查询部分必须做成接口,以便用户调用程序。但是,创建索引部分却可以独立出来,这样不但减少了全文检索系统对用户程序的影响,又可以让全文检索系统专注于索引,从而把它做得更好[5]。 本多媒体文件检索系统将提供三个查询接口:文件索引Web查询接口、文件索引桌面查询接口和数据库索引查询接口。其中,文件索引在Web系統与桌面系统中的使用有一定的区别,而数据库索引在所有的系统中查询都是一样的,所以只给出一个接口。为了使系统更容易被使用,系统将不使用任何数据库,而是用XML驱动系统的运行。
2.多媒体文件检索系统的业务流程
用户首先设置索引创建根目录,然后根据具体应用使用数据库索引或是文档索引,并作相应设置。
数据库索引需要配置数据库;选择要索引的表、列及类型;并对索引创建时间、速度、是否生成查询代码等数据库索引选项做设置。文档索引需要选择要索引的文件夹、文档类型,并对索引创建时间、速度、是否处理子目录等文档索引选项做设置。所有都设置好后,一切就交给索引服务器处理了。索引服务器一直运行于后台,并根据用户的设置,按时完成索引的创建,生成索引创建日志等。用户根据自己的应用类型,选择自己需要的查询接口,直接或是稍作修改后嵌入到自己的系统中,为自己的应用添加上全文检索的功能。这里的使用看似很方便,但它并非是独立的。它是以索引服务器完成相应索引的创建为前提的。如果索引服务器没有创建索引,将不能搜到任何东西。因此在使用接口前要启动索引服务器完成索引的创建。
六、结论
首先,对多媒体文件索引和检索技术的现状及其发展趋势作了介绍,对全文检索引擎工具包Lucene的相关技术进行了深入的研究,在对Lucene架构的研究基础上对索引方式进行了分析,并对Lucene的应用特点及其优势进行了深入的探讨。然后,分析了Lucene的基本工作原理,剖析了Lucene的体系结构及主要功能模块、部分关键算法分析。对多媒体文件检索系统的需求进行了分析,提出并设计了使用Lucene用来解决多媒体文件检索的方案。最后,通过Lucene对多媒体文件进行索引的构建及索引的查询,使用.NET平台及C#语言设计并完成多媒体文件检索系统。
参考文献
[1] 于天恩. Lucene搜索引擎开发权威经典[M]. 中国铁道出版社, 2008: 56-62
[2] 杨光宇.全文检索系统Lucene的分析与扩展[D].吉林大学,2007:14-28
[3] 张校乾.基于Lucene的全文检索系统的研究与应用[D].辽宁:大连理工大学,2005.
[4] Simon Robinson,K.Scott Allen等著.杨浩,杨铁男等译.C#高级编程第二版.北京:清华大学出版社,2004:86-219.
[5] 张宏.魏杰 基于Lucene的多媒体搜索工具的开发设计[J].现代计算机.2009.5:168-171
作者简介:曾维,女,中共党员,贵州省图书馆馆员。
关键词:多媒体文件 检索系统 搜索引擎 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.net.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..NET Framework 。其支持生成和运行下一代应用程序和 XML Web Services 的内部 Windows 组件。
2.C#。它是一种最新的、面向对象的编程语言[4]。其使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
五、多媒体文件检索系统的概要设计
1.多媒体文件检索系统的架构
多媒体文件检索系统的设计最初是为软件开发人员提供一套完整的全文检索解决方案,让没有全文检索知识的开发人员在不用对自己程序做改动的前提下,快速地为自己的检索系统添加全文检索的功能。想要把全文检索嵌入到多媒体文件检索系统,查询部分必须做成接口,以便用户调用程序。但是,创建索引部分却可以独立出来,这样不但减少了全文检索系统对用户程序的影响,又可以让全文检索系统专注于索引,从而把它做得更好[5]。 本多媒体文件检索系统将提供三个查询接口:文件索引Web查询接口、文件索引桌面查询接口和数据库索引查询接口。其中,文件索引在Web系統与桌面系统中的使用有一定的区别,而数据库索引在所有的系统中查询都是一样的,所以只给出一个接口。为了使系统更容易被使用,系统将不使用任何数据库,而是用XML驱动系统的运行。
2.多媒体文件检索系统的业务流程
用户首先设置索引创建根目录,然后根据具体应用使用数据库索引或是文档索引,并作相应设置。
数据库索引需要配置数据库;选择要索引的表、列及类型;并对索引创建时间、速度、是否生成查询代码等数据库索引选项做设置。文档索引需要选择要索引的文件夹、文档类型,并对索引创建时间、速度、是否处理子目录等文档索引选项做设置。所有都设置好后,一切就交给索引服务器处理了。索引服务器一直运行于后台,并根据用户的设置,按时完成索引的创建,生成索引创建日志等。用户根据自己的应用类型,选择自己需要的查询接口,直接或是稍作修改后嵌入到自己的系统中,为自己的应用添加上全文检索的功能。这里的使用看似很方便,但它并非是独立的。它是以索引服务器完成相应索引的创建为前提的。如果索引服务器没有创建索引,将不能搜到任何东西。因此在使用接口前要启动索引服务器完成索引的创建。
六、结论
首先,对多媒体文件索引和检索技术的现状及其发展趋势作了介绍,对全文检索引擎工具包Lucene的相关技术进行了深入的研究,在对Lucene架构的研究基础上对索引方式进行了分析,并对Lucene的应用特点及其优势进行了深入的探讨。然后,分析了Lucene的基本工作原理,剖析了Lucene的体系结构及主要功能模块、部分关键算法分析。对多媒体文件检索系统的需求进行了分析,提出并设计了使用Lucene用来解决多媒体文件检索的方案。最后,通过Lucene对多媒体文件进行索引的构建及索引的查询,使用.NET平台及C#语言设计并完成多媒体文件检索系统。
参考文献
[1] 于天恩. Lucene搜索引擎开发权威经典[M]. 中国铁道出版社, 2008: 56-62
[2] 杨光宇.全文检索系统Lucene的分析与扩展[D].吉林大学,2007:14-28
[3] 张校乾.基于Lucene的全文检索系统的研究与应用[D].辽宁:大连理工大学,2005.
[4] Simon Robinson,K.Scott Allen等著.杨浩,杨铁男等译.C#高级编程第二版.北京:清华大学出版社,2004:86-219.
[5] 张宏.魏杰 基于Lucene的多媒体搜索工具的开发设计[J].现代计算机.2009.5:168-171
作者简介:曾维,女,中共党员,贵州省图书馆馆员。