Lucene 就是这么简单

栏目: 后端 · 发布时间: 6年前

内容简介:Lucene是一个开源的使用java语言编写的全文搜索引擎开发包,可以融入到自己的项目中来实现增加索引和搜索功能,其实就是一款高性能的、可扩展的信息检索工具库。和其他开源软件一样,有着与生俱来的优点:功能和结构的透明性、功能强大且具有较强的扩展性、技术社区的强大支持同时也方便技术交流。Lucene只是一个搜索的核心库,并不提供具体的实现,但它的应用十分广泛,Solr、ElasticSearch 、Katta等底层用的都是Lucene。其特点:API简单,易于学习(但是不同的版本API差别较大)。Lucen

本文要点:

  • Lucene 简介

  • Lucene 的核心API

  • Lucene的简单使用

  • 利用Luke查看分词结果

1. 简介

1.1 什么是lucene?

Lucene是一个开源的使用 java 语言编写的全文搜索引擎开发包,可以融入到自己的项目中来实现增加索引和搜索功能,其实就是一款高性能的、可扩展的信息检索 工具 库。和其他开源软件一样,有着与生俱来的优点:功能和结构的透明性、功能强大且具有较强的扩展性、技术社区的强大支持同时也方便技术交流。

Lucene只是一个搜索的核心库,并不提供具体的实现,但它的应用十分广泛,Solr、ElasticSearch 、Katta等底层用的都是Lucene。其特点:API简单,易于学习(但是不同的版本API差别较大)。

Lucene的原理:是倒 排序 索引。

那么到底什么是倒排序索引,什么又是正排序索引呢?

个人理解:

倒排序索引:即经过Lucene分词之后,它会维护一个类似于“词条--文档ID”的对应关系,当我们进行搜索某个词条的时候,就会得到相应的文档ID。

而正排序索引是:当我们进行搜索的时候,会对整个文档的内容进行搜索,不维护“词条--文档ID”的对应关系,然后如果匹配上,得到对应的文档ID,这样做肯定耗时,因为就像是数据库里的表缺少了索引一样。

2. Lucene 核心API

2.1 索引过程中的核心类

Document、 Field 、IndexWriter、 Directroy、 Analyzer

Dcoument 文档,一个文档代表一些域(Field)的集合。他是承载数据的实体,是一个抽象的概念,并不是word 或者 Txt什么的。Document代表一个被索引的基本单元。

构造方法

常用的API:

Field 索引中的每一个Document对象都包含一个或者多个不同的域(Field),域是由域名(name)和域值(value)对组成,每一个域都包含一段相应的数据信息。

常用的构造方法:

IndexWriter 是索引过程的核心组件。这个类用于创建一个新的索引并且把文档 加到已有的索引中去。他可以为你提供对索引的写入操作,但不能进行读取或搜索。

构造方法:

其核心API有:

Directory 是索引的存放位置,是个抽象类。具体的子类提供特定的存储索引的地址。FSDirectory 将索引存放在指定的磁盘中,RAMDirectory ·将索引存放在内存中。

FSDirectory 的创建:

RAMDirectory 创建:

Analyzer 分词器,在文本被索引之前,需要经过分词器处理,他负责从将被索引的文档中提取词汇单元,并剔除剩下的无用信息(停止词汇),分词器十分关键,因为 不同的分词器,解析相同的文档结果会有很大的不同 。Analyzer是一个抽象类,是所有分词器的基类。他通过TokenStream类似一种很好的方式,将文本逐字。

常用的分词器有:

2.2 搜索过程中的核心类

IndexSearcher 、Term、Query、TermQuery、TopDocs

IndexSearcher 调用它的search方法,用于搜索IndexWriter 所创建的索引。

构造方法:

常用API:

Term 使用于搜索的一个基本单元。

Query Lucene中含有多种查询(Query)子类。比如,TermQuery(单词条查询)、BooleanQuery(布尔查询)、PhraseQuery(短语搜索)、PrefixQuery(前缀搜索)等。它们用于查询条件的限定其中TermQuery 是Lucene提供的最基本的查询类型,也是最简单的,它主要用来匹配在指定的域(Field)中包含了特定项(Term)的文档。

TopDocs 是一个存放有序搜索结果指针的简单容器,在这里搜索的结果是指匹配一个查询条件的一系列的文档。

三、简单的demo

Lucene 就是这么简单

POM依赖:

工具类:

创建索引:

搜索索引:

四、查看Lucene的分词结果神器之-----Luke

luke 各版本的下载git地址:https://github.com/DmitryKey/luke/releases

具体应用:

打开索引库目录:

Lucene 就是这么简单

Lucene 就是这么简单

查看词条:

Lucene 就是这么简单

进行搜索:

Lucene 就是这么简单

参考:

  1. 《Lucene 实战》 - 作者: Michael McCandless / Erik Hatcher / Otis Gospodnetic 出版社: 人民邮电出版社 译者: 牛长流 / 肖宇 出版年: 2011-6-1

  2. http://lucene.apache.org/

Lucene 就是这么简单


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PCI Express 体系结构导读

PCI Express 体系结构导读

王齐 / 机械工业 / 2010-3 / 55.00元

《PCI Express 体系结构导读》讲述了与PCI及PCI Express总线相关的最为基础的内容,并介绍了一些必要的、与PCI总线相关的处理器体系结构知识,这也是《PCI Express 体系结构导读》的重点所在。深入理解处理器体系结构是理解PCI与PCI Express总线的重要基础。 读者通过对《PCI Express 体系结构导读》的学习,可超越PCI与PCI Express总线......一起来看看 《PCI Express 体系结构导读》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试