Lucene实现索引和查询

  随着万维网的发展和大数据时代的到来,每天都有大量的数字化信息在生产、存储、传递和转化,如何从大量的信息中以一定的方式找到满足自己需求的信息,使之有序化并加以利用成为一大难题。全文检索技术是现如今最普遍的信息查询应用,生活中利用搜索引擎,在博客论坛中查找信息,这些搜索的核心原理就是本文要实现的全文检索技术。随着文档信息数字化的实现,将信息有效存储并及时准确的提取是每一个公司、企业和单位要做好的基础。针对英文的全文检索已经有很多成熟的理论和方法,开放源代码的全文检索引擎Lucene 是Apache 软件基金会Jakarta 项目组的一个子项目,它的目的是为软件开发人员提供一个简单易用的工具包,方便在目标系统中实现全文检索的功能。Lucene不支持中文,但是目前已有很多开源的中文分词器可以对中文内容进行索引,本文在研究Lucene核心原理的基础上,分别实现了对中英文网页的爬取和检索。

1 Lucene介绍 1.1 lucene简介

Lucene是一个用Java写的全文检索引擎工具包,实现构造了索引和搜索两大核心功能,并且两者相互独立,这使得开发人员可以方便扩展,Lucene提供了丰富的API , 可以与存储在索引中的信息方便的交互。需要说明的是它并不是一个完整的全文检索应用, 而是为应用程序提供索引和搜索功能。即若想让Lucene 真正起作用, 还需在其基础上做一些必要的二次开发。

Lucene的结构设计与数据库的设计较为相似,但Lucene的索引与数据库有着极大的不同。数据库和Lucene建立索引都是为了查找方便,但是数据库仅仅针对部分字段进行建立,且需要把数据转化为格式化信息,并予以保存。而全文检索是将全部信息按照一定方式进行索引。两种检索的不同和相似如表1-1所示。

表1-1:数据库检索与Lucene检索对比

比较项

 

Lucene检索

 

数据库检索

 

数据检索

 

从Lucene的索引文件中检出

 

由数据库索引检索记录

 

索引结构

 

Document(文档)

 

Record(记录)

 

查询结果

 

Hit:满足关系的文档组成

 

查询结果集:包含关键字的记录组成

 

全文检索

 

支持

 

不支持

 

模糊查询

 

支持

 

不支持

 

结果排序

 

设置权重,进行相关性排序

 

不能排序

 

1.2 lucene总体结构

Lucene软件包的发布形式是一个JAR文件,版本更新较快且版本差距较大,本文使用的是5.3.1的版本,主要使用的子包如表1-2所示。

表1-2:子包和功能

包名

 

功能

 

Org .apache.lucene .analysis

 

分词

 

Org .apache.lucene .document

 

对索引管理的文档

 

Org .apache.lucene .index

 

索引操作,包括增加、删除等

 

Org .apache.lucene .queryParser

 

查询器,构造检索表达式

 

Org .apache.lucene .search

 

检索管理

 

Org .apache.lucene .store

 

数据存储管理

 

Org .apache.lucene .util

 

公共类

 
1.3 lucene架构设计

Lucene功能非常强大,但从根本上来说,主要包括两块:一是从文本内容切分词后索引入库;二是根据查询条件返回结果,即建立索引和进行查询两部分。

如图1-1所示,本文抛出外部接口以及信息来源,重点对网页爬取的文本内容进行索引和查询 。 

Lucene实现索引和查询

 

                              图1-1:Lucene的架构设计

 

2 JDK的安装和环境变量的配置   1.jdk的下载:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b267b3b237a20bf36436ddbcf7ac3d25.html