ElasticSearch所使用的倒排索引的思想和使用场景

背景:

在关系数据库系统里,索引是检索数据最有效率的方式,。但对于搜索引擎,它并不能满足其特殊要求:
1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至百亿级的网页数量 ,面对如此海量数据 ,使得数据库系统很难有效的管理。
2)数据操作简单:搜索引擎使用的数据操作简单 ,一般而言 ,只需要增、 删、 改、 查几个功能 ,而且数据都有特定的格式 ,可以针对这些应用设计出简单高效的应用程序。而一般的数据库系统则支持大而全的功能 ,同时损失了速度和空间。最后 ,搜索引擎面临大量的用户检索需求 ,这要求搜索引擎在检索程序的设计上要分秒必争 ,尽可能的将大运算量的工作在索引建立时完成 ,使检索运算尽量的少。一般的数据库系统很难承受如此大量的用户请求 ,而且在检索响应时间和检索并发度上都不及我们专门设计的索引系统

何为倒排索引?

常见的正常索引

 

假设我们要通过id去查找content,我们会将ID做成索引,加快我们的查找

现在的问题是我们要去查到那些content中有b这两个词

首先想到的是依次去尝试content中是否有b,显然在时间复杂度上是很大的,尤其是数据库中数量很多时

那么如何去解决这个问题?

现在都需要引入倒排索引的思想


我们已content做成索引,这样查找ID的时间就快很多

跟正向的索引比较,也就是做了一个倒置,这就是倒排索引的思想

倒序索引定义:

也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射


那么使用场景有哪些?

1、全文搜索(搜索引擎)

在一组文档中查找某一单词所在文档及位置

2、模糊匹配

通过用户的输入去匹配词库中符合条件的词条

3、商品搜索

通过商品的关键字去数据源中查找符合条件的商品

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章