倒排索引(又叫反向索引)
生活场景
- 背诵诗词
普通索引是 key->诗歌名称; value -> 诗歌内容
倒排索引是 key->诗歌内容里面的字 value -> 诗歌内容
索引压缩
索引量暴增:倒排索引一首诗歌或者一篇文章会产生很多倒排索引
索引value可以指向诗歌名,索引key还是指向诗歌内容里面的字。
多首诗可以形成索引矩阵
搜索引擎原理
根据一个内容搜索到要找的文章。
关键都是建立倒排索引。
百度、谷歌搜索基本都是网页爬虫+停顿词过滤等
停顿词
文章中没有意义的词,可以认为是停顿词,不需要建立索引
分词
文章内容 经过停顿词过滤的过程,就是分词。
经过分词之后获取到关键字,对关键字建立倒排索引
搜索引擎的过程
爬取内容 ——> 进行分词 ——> 建立反向索引(倒排索引)
简介
elasticsearch是由lucence基础上改造而来。lucence是一个库,可以建立倒排索引。但是只有懂搜索引擎原理的人才能用的好。elasticsearch对其进行了封装,通过restful api就可以进行操作,使用方便;elasticsearch实现了分布式。
专有名词
索引
此索引不是倒排索引,而是一个存放数据的地方,类似mysql中的一个数据库
类型
用来定义数据结构,类似mysql中的一张表
文档
类似mysql中的一行记录
内容存储
实例:比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫 Poems 的索引,然后创建一个名叫 Poem 的类型,类型是通过 Mapping 来定义每个字段的类型。
Keyword 类型是不会分词的,直接根据字符串内容建立反向索引,Text 类型在存入 Elasticsearch
的时候,会先分词,然后根据分词后的内容建立反向索引。
Elasticsearch 把操作都封装成了 HTTP 的 API,我们只要给 Elasticsearch 发送 HTTP 请求就行。
比如使用 curl -XPUT ‘http://ip:port/poems’,就能建立一个名为 Poems 的索引,其他操作也是类似的。