主题搜索引擎的探究

时间:2012-06-05来源:网络

ch数组表示的是文本内容,juli是词的长度, TreeMap数组存储不同长度的词。

方法2:public synchrONized void ciPinTongJi(HashMaphm,char[]ch,int size,TreeMap[] tmp)。

方法2是并发执行的,正反匹配都需要这个方法。HashMap存储字典中词的第1个字,ch数组表示的是文本内容,size是文件的长度,TreeMap是数组存储不同长度的词,按照2个字、3个字、多个字的存储顺序存储; 而且方法2是对外的接口,方法2调用方法1,并利用方法1返回的结果得到分词的结果和词频结果。当从文本读入1个字时,使用contain( )来判断HashMap中是否存在这个字的映射,如果存在就取得长度等于字典中最长词的一段内容,在TreeMap数组中进行查找,如果在TreeMap中找到对应的映射则对应的键值加1,输出时在词后面加上分割符号'',然后继续重复前面的步骤,直到文件结束,退出;如果TreeMap中不存在,那么i+1,读取下一个字,重复前面的步骤,直到文件的结尾,退出,程序结束。

正向匹配程序流程图如图3所示。

3 全文检索引擎Lucene的应用

Lucene本身只是一个组件,若想让Lucene真正起作用,还得在Lucene基础上进行必要的2次开发[7].下面的方案是对Lucene的应用研究,在本系统实现过程中要解决的关键问题有:数据加工及文本数据库的实现;全文数据索引;全文数据检索和结果处理。

3.1 运行环境

操作系统:Windows NT/2000/xp;开发语言:Java、JSP;开发环境:MyEclipse6.5;API插件:Lucene2.3.2(Jakarta Lucene是一套免费的开放源代码,由 Apache Jakarta开发);Web服务器:Apache的Tomcat6.0.

Lucene在Java环境下运行,因此首先要安装jdk并设置环境变量JAVA_HOME,还要安装tomcat6.0.到Lucene的官方网站下载1份拷贝(笔者下载的是最新版2.3.2),下载后将得到一个名为lucene-2.3.2.zip和apache-ant-1.7.0-bin.zip的压缩文件,将其解压即可。

3.2 系统结构

该应用分为3部分:(1)数据库发布平台,包括服务器、Java环境、Lucene API、中文分词模块;(2)HTML文件倒排档生成系统;(3)服务器端执行的JSP程序和用户界面。系统结构如图4所示。

3.3 Lucene的扩展

对于Lucene组件包,为了能够支持中文,要进行修改。首先将改写后支持中文的分析包IKAnalyzer.jar加入到发布包Analysis包中。解开Lucene.zip,在解开的目录srcdemoorgapacheLucenedemo下打开IndexHTML. java.在第1处import org. apache. lucene. analysis. standard. StandardAnalyzer;下面加1行import org.apache. lucene. analysis. IKAnalyzer;,把第2处writer=new IndexWriter (index, new StandardAnalyzer (),create);注释掉,换成writer=new IndexWriter(index,new ChineseAnalyzer(), create);解开Luceneweb. War,释放出configuration. jsp和result. jsp以及web. xml.编辑configuration. Jsp,找到indexLocation变量,赋值成/index(或者用户自己建立的索引的目录名称);编辑result. Jsp,找到Analyzer analyzer=new StopAnalyzer();删除或者注释掉,改成Analyzer analyzer=new org. apache. lucene. analysis. IKAnalyzer();.这样就扩展了Lucene的中文分词的功能。

Lucene并没有规定数据源的格式,而只提供了1个通用的结构(Document对象)来接收索引的输入,因此输入的数据源可以是:数据库、WORD文档、PDF文档、HTML文档……,只要能够设计相应的解析转换器将数据源构造成Docuement对象即可进行索引。本设计实现了doc、ppt、xls、pdf、txt、xml解析转换器将其文本信息提取出来。

3.4 搜索性能的比较

经过多次测试取平均值,本设计在搜索主题信息的平均速度上比Google要快,虽然数量上不如Google检索的多,但在信息符合度上明显比其强。这样就已经符合主题用户,不一定要多只要精而且节省时间的需求,这对于当今效率优先的市场来说是非常有竞争力的。应用Lucene的搜索引擎的检索速度与计算机的配置有关,配置较好的计算机的搜索时间相对要少。以检索关键字编程为例,Lucene与Google性能比较结果如表1所示。

全文检索引擎Lucene所构建的搜索引擎的搜索个数是由磁盘存储的信息量的多少决定的,搜索时间除了第1次检索有点慢,以后的时间耗费明显少于通用搜索引擎。虽然通用搜索引擎提供的信息量大,但是并不是所有的信息都符合用户的需求,用户要在大量的信息中筛选有用的信息要花费大量的时间,可见主题搜索引擎的优势,本设计基本符合预期的结果。

本文提出了一种解决中文全文检索的方法,嵌入到Lucene中可以应用到搜索引擎、中小企业网站站内检索、个人用户桌面搜索引擎建立、特定文档检索数据库建立等,从而实现对目标文档方便地检索管理,提高检索效率。并且通过对全文检索引擎Lucene的研究以及在Lucene API上的扩展,可以开发出多种应用程序,如:网站内容搜索系统、可检索的邮件系统、海量文献数据搜索系统。为了开发出性能指标更高的搜索引擎可以根据现有的排序算法或自定义排序算法自行开发结果排序模块加入到Lucene中来进行测试比较,这些都有待于继续研究。

1 2

关键词: 探究 搜索引擎 主题

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版