大数据技术之Elasticsearch-概述(二)全文检索和Lucene*

1)全文检索,倒排索引

(1)全文检索

全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户 的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索引擎数据库中的数据。

(2)倒排索引-举例

传统数据库存储:

id

描述

1

优秀员工

2

销售冠军

3

优秀团队领导

4

优秀项目

对应搜索引擎:

https://wiki.mbalib.com/wiki/%E5%A4%A7%E6%95%B0%E6%8D%AE  

链接内所有文字

目的:搜索员工,返回1

--------------------------------------------------------------------------------------------------

倒排索引处理步骤:

1、切词:

优秀员工 —— 优秀 员工

销售冠军 —— 销售 冠军

优秀团队领导 —— 优秀 团队 领导

优秀项目 —— 优秀 项目

注意:切词的算法,最好要保证不同词条切词的效果相同

2、建立倒排索引:

就是建立一张关键词和原始表的映射表

关键词找对应的 id

所有切词之后的关键词

包含关键词的id

优秀

1,3,4

员工

1

销售

2

团队

3

。。。

。。。

3、搜索

关键词:优秀

1从倒排索引中查找id

优秀 1,2,3,4

1,2,3,4

2从原始表中通过id取出原始数据

1 优秀论文

2 优秀员工称号

3 优秀项目

4 优秀团队

 

es全文检索的基本原理 全文检索elasticsearch_倒排索引

2)Lucene和ES

Lucene是一个基于Java的全文信息检索工具包,它只做了文本检索的部分,所以他不是完整的搜索引擎。

Lucene可以把文本进行索引,将索引文件保存到磁盘或内存中。

lucene,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene的api进行去进行开发就可以了。

ES是一个高度可伸缩的开源全文搜索引擎。

性能:可以以近实时的方式快速存储,搜索,分析大量数据。

ES也是基于Lucene开发的,他隐藏了复杂性,并且提供了restful api接口(调用URL就能显示数据了),java api接口(写Java代码)。