SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

Posted 无限之声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民相关的知识,希望对你有一定的参考价值。

SAST weekly是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注,欢迎愿意分享知识的同学投稿eesast@mail.tsinghua.edu.cn

lucene简介

Lucene是一款高性能的、可扩展的信息检索(IR)工具库,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。

lucene安装及环境配置

第1步 - 安装Java开发工具包(JDK)

一定要注意JDK版本要与lucene版本匹配,因为下面用的lucene是4.0.0版本的,所以用的的JDK是1.8(理论上1.6以上就可)。请自行百度如何添加环境变量。安装完毕后,ctrl+R输入cmd打开命令行窗口,在cmd窗口中输入java,如果提示下面的内容,表面jdk已经安装成功了。

如果提示'java' 不是内部或外部命令,也不是可运行的程序或批处理文件。表明jdk没有安装成功。

输入java -version顺便可以查看java版本

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

第2步 - 安装Eclipse IDE

第3步 - 安装Lucene

注意下载.zip文件。解压后放置在合适位置即可。使用 Eclipse 不需设置 CLASSPATH,因为所有的设置已通过Eclipse进行。

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

第4步 - java搭建lucene需要的jar包

lucene全文检索需要的4个jar包(在之前下载的文件夹中):

① Lucene-core-4.0.0.jar

② Lucene-analyzers-common-4.0.0.jar

③ Lucene-highlighter-4.0.0.jar

④ Lucene-queryparser-4.0.0.jar

具体操作

鼠标右键点击已经建好的project(不是package或者class)选择最下面properties,出现下图,选择Java Build Path, 然后选择Add External JARs,将下载的lucene文件夹中前面提到的四个包导入。

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

导入成功后应该为下图所示:

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

一切准备工作就绪,可以开始写代码了!

lucene之初入江湖

1、是什么是全文检索?

比如,我们一个文件夹中有很多的文件,记事本、world、Excel、pdf,我们想根据其中的关键词搜索包含的文件。当输入“我爱科协”,所有内容含有Lucene的文件就会被检查出来。这就是所谓的全文检索。

2、Lucene的架构设计

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

通过上面这张图,我们可以看到Lucene的使用主要体现在两个步骤:索引流程、搜索流程。

step 1:索引流程:即采集数据构建文档对象分析文档(分词)创建索引。

step 2:搜索流程:即用户通过搜索界面创建查询执行搜索,搜索器从索引库搜索渲染搜索结果。

3、Lucene索引文件结构

文档域:非结构化的数据统一格式为document文档格式,一个文档可以有多个field域,不同的文档,其field的个数可以不同,建议相同类型的文档包括相同的field。 

索引域:将Document中的Field的内容进行分词,将分好的词创建索引,索引=Field域名:词。 索引域用于搜索,搜索程序将从索引域中搜索一个一个词,根据词找到对应的文档(Document)。

4、Lucene创建索引过程

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

词法分析器要借助的词法分析器Analyzer来实现。这里面使用的是标准的词法分析器。

IndexWriter是索引过程的核心组件,通过它可以创建新索引、更新索引、删除索引操作。IndexWriter需要通过Directory对索引进行存储操作。

Directory描述了索引的存储位置,底层封装了I/O操作,负责对索引进行存储。它是一个抽象类,它的子类常用的包括FSDirectory(在文件系统存储索引)、RAMDirectory(在内存存储索引)。

具体步骤

step 1:使用分词器(Analyzer)按规则取出一段文本包含的所有词,并进行本地文件存储;

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

step 2:创建IndexWriter,写入索引文件;

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

step 3:内容提取,进行索引的存储;

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

step 4:打开存储位置并创建搜索器;

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

step 5:进行关键字查询;

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

step 6:关闭查询器等;

ireader.close( );

directory.close( );

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

lucene之小刀牛试

还没入门的我建了六个txt文件,其中1,4,6带有SAST Weekly,尝试检索SAST Weekly:

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民
SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

检索结果

SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民

结语

对lucnen有了基本的了解后,大家就可以去官网下载demo的源码了,记得还要导入lucene-demo-4.0.0.jar~

写完推送,我好像lucene入门了???


撰稿:苑苑

审核:黄铭涛



以上是关于SAST Weekly | 初探Lucene : java嵌入式搜索引擎中的一等公民的主要内容,如果未能解决你的问题,请参考以下文章

Lucene初探之索引文件格式

Lucene初探之数据格式详情

Lucene初探之索引过程分析

Lucene初探之索引过程分析

Lucene初探之索引过程分析

Lucene初探之索引过程分析