APP下载

农业科技知识倒排索引的设计与实现

2015-12-17李永可金忠明李悦

电脑知识与技术 2015年28期
关键词:搜索引擎数据库

李永可 金忠明 李悦

摘要:信息技术的飞速发展大大提高了我国农业信息化水平,专业农业科技知识检索成为农民生产过程中解决生产问题的重要手段,该文通过对倒排索引技术研究,对农业科技知识建立倒排索引,并在倒排索引基础上设计农业科技知识检索系统,为农民提供精准农业科技知识检索服务。

关键词:倒排索引;搜索引擎;数据库

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)27-0176-02

Abstract:The rapid development of information technology has greatly increased the agricultural informatization level in China, specialized in the production of agricultural science and technology knowledge retrieval become farmers the important means to solve the problem of production, based on the technical research inverted index structure, the knowledge of agricultural science and technology to establish inverted index, and based on inverted index design of agricultural science and technology knowledge retrieval system, precision agriculture science and technology knowledge retrieval service for the farmers.

Key words:Inverted index;Search engine;The database

信息技術的飞速发展大大提高了我国农业信息化水平,在传统农业生产过程中,农民在生产过程中遇到的各种问题主要通过咨询相关领域农业专家进行解决,但我国农业人口众多而农业专家数量有限,因此有时咨询专家也存在一定困难。随着信息技术的快速发展,我国农业信息化水平有了很大提高,越来越多的农民能够使用互联网进行信息查询,本文通过对倒排索引技术的研究,设计了农业知识倒排索引,并在倒排索引基础上开发了农业科技知识检索系统,为农民提供专业农业科技知识检索服务。

1 倒排索引技术

倒排索引也称为反向索引、反向档案,是一种索引方法,源于实际应用中需要根据属性的值来查找记录,用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置,是对文档或者文档集合的一种最常用的索引机制。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表,是其他结构无法抗衡的高效索引结构。倒排索引主要有个两部分组成:“词典”和“倒排记录表”。

本文是以大学生创新项目“农业知识检索系统的设计与实现”为背景,在建立了农业知识库的基础上,为实现对农业知识的全文检索而设计的。为实现农业知识全文检索的功能,必须对知识库中的农业科技知识建立倒排索引,然后通过检索页面对倒排索引进行检索,返回给用户高相关度的检索结果。

2 农业知识倒排索引设计

2.1收集需要建立索引的文档

经过先前的准备已经依据“农业信息分类标准草案”,把农业信息按类录入农业知识库。录入途径主要为:1.通过农业网络爬虫从相关农业网站抓取信息,然后分类导入知识库。2.人工录入已掌握的大量农业信息。目前已录入农业科技知识文档350多万篇,为倒排索引的构建奠定了数据支持。

2.2将每篇文档词条化

词条化是将给定的字符序列拆分成一系列子序列的过程,其中每个子序列称为一个词条。在这个过程中,可能会同时去掉一些特殊字符,如标点符号等。在这里我们用中文分词器对已录入的农业知识文档进行词条化。通过对IKAnalyzer、ictclas、庖丁解牛等中文分词器的比较,最终采用IKAnalyzer2012_u6作为本系统的分词器,该分词器不但有160万/秒的高性能分词能力,而且还具备智能分词和最细粒度分词两种可选模式,方便制定开发。倒排索引主要包括四个域,分别为标题、正文、表名和记录ID,标题和正文是需要检索的域,因此在建立倒排索引时需要对这两个域分词并存储。下面以一篇农业知识文档中的一部分为例:

输入:小麦叶锈病主要侵害小麦叶片,产生疱疹状病斑。

输出:小麦 叶锈病 主要 侵害 小麦 叶片 产生 疱疹状 病 斑

2.3对所有农业知识文档按照其中的词项来建立倒排索引

我们假定构成农业知识库的每一篇文档,都有一个唯一的标识符即编号(docID)。在索引构建过程中,我们给每篇新出现的文档赋一个连续的整数编号。对每篇文档建立索引时的输入就是一个归一化的词条表,也可以看成二元组(词项,文档ID)的一个列表如图1。建立索引最核心的步骤是将这个列表按照词项的拼音首字母顺序进行排序,我们会得到如图1中部显示的结果,其中一个词项在同一文档中的多次出现会合并在一起,最后整个结果分成词典和倒排记录表两部分,如图1右部所示。

由于一个词项通常会在多篇文档中出现,我们上面组织数据的方法实际也已经减少了索引的存储空间。词典中同样可以记录一些统计信息,比如出现某词项的文档的数目,即文档频率,这里也就是每个倒排记录表的长度。倒排记录表会按照docID进行排序,这为高效的查询处理提供了重要基础。

2.4倒排索引创建

Lucene是由Apache软件基金会提供和支持的一套用于全文检索的开源库,Lucene为开发者提供了一个简单却功能强大的应用程序接口,开发者可以利用这些接口做全文索引和检索。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。我们利用lucene3.5构建倒排索引,创建倒排索引核心代码如下:

IndexWriterConfig conf=new IndexWriterConfig(Version.LUCENE_35,ik);

conf.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);

IndexWriter writer =new IndexWriter(fdir,conf);

Field f1 = new Field("title", title.trim(), Field.Store.YES, Field.Index.ANALYZED);

Field f2 = new Field("content", content, Field.Store.YES, Field.Index.ANALYZED);

Field f3 = new Field("table", table, Field.Store.YES, Field.Index.NOT_ANALYZED);

Field f4 = new Field("id", id, Field.Store.YES, Field.Index.NOT_ANALYZED);

Document doc = new Document();

doc.add(f1);

doc.add(f2);

doc.add(f3);

doc.add(f4);

writer.addDocument(doc);

writer.close();

3 結束语

农业知识搜索引擎倒排索引的设计与实现为农业知识搜索引擎的开发奠定了基础,在此基础上,项目后期将实现倒排索引的检索功能。通过倒排索引的设计,实现了农业知识库全文检索的功能,解决了传统数据库只能进行模糊匹配不能进行全文检索的问题。

参考文献:

[1] 龙妍.基于Lucene的高校档案全文检索系统的设计与实现[J].轻工科技,2014(9):65-66.

[2] 王飞红,丁泽发.基于lucene的垂直搜索引擎设计与实现[J].电子技术与软件工程,2014(5):206.

[3] 王斌.信息检索导论[M].北京:人民邮电出版,2010.

[4] 胡毅,刘波,方逵.农业知识库知识检索系统研究与实现[J].农机化研究,2013(6):13-18.

[5] 王玉娟.农业知识文本库检索系统关键技术研究[D].长沙:湖南农业大学,2012.

[6] 马文峰,杜小勇.知识检索研究[J].情报理论与实践,2006,29(2):157-158.

猜你喜欢

搜索引擎数据库
数据库
数据库
数据库
数据库
数据库
网络搜索引擎亟待规范
Nutch搜索引擎在网络舆情管控中的应用
基于Nutch的医疗搜索引擎的研究与开发
广告主与搜索引擎的双向博弈分析
基于Lucene搜索引擎的研究