内容简介: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
POM依赖:
工具类:
创建索引:
搜索索引:
四、查看Lucene的分词结果神器之-----Luke
luke 各版本的下载git地址:https://github.com/DmitryKey/luke/releases
具体应用:
打开索引库目录:
查看词条:
进行搜索:
参考:
-
《Lucene 实战》 - 作者: Michael McCandless / Erik Hatcher / Otis Gospodnetic 出版社: 人民邮电出版社 译者: 牛长流 / 肖宇 出版年: 2011-6-1
-
http://lucene.apache.org/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。