Lucene 就是这么简单

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

内容简介: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 就是这么简单


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

查看所有标签

猜你喜欢:

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

SQL基础教程

SQL基础教程

MICK / 孙淼、罗勇 / 人民邮电出版社 / 2013-8-1 / CNY 69.00

本书介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法,提供了大量的示例程序和详实的操作步骤说明,读者可以亲自动手解决具体问题,循序渐进地掌握SQL的基础知识和技巧,切实提高自身的编程能力。在每章结尾备有习题,用来检验读者对该章内容的理解程度。另外本书还将重要知识点总结为“法则”,方便大家随时查阅。 本书适合完全没有或者具备较少编程和系统开发经验的初学者,也可以作为大中专院校的教材......一起来看看 《SQL基础教程》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器