ElaticSearch学习记录(一)-倒排索引

什么是倒排索引

       倒排索引是搜索引擎中最核心的技术之一,是搜索引擎的基石。正因为有了倒排索引这项技术才使得对数据库的查询、删除操作变得更加高效。

       倒排索引源于实际应用中需要根据属性的值来查找记录的需求,就是需要根据一段单词或者文字来查询数据库中有那些记录(文档)中包含这些文字。类似于MySQL中的模糊查询(like)。正常我们是根据内容去查询该内容中是否包含某个值,倒排索引是根据值来查询那些内容中包含这些值,所以被称之为倒排索引

原理

       我们来根据下面的例子来理解倒排索引的工作原理。

  1. 崔二旦喜欢Java
  2. Java 是开发语言
  3. 张三喜欢Java开发语言

       在创建倒排索引的时候,我们需要通过分词器将每个文档的内容拆分成单独的词(这里称之为词条或单词),创建一个包含所有不重复词条的排序列表,然后列出每个词条在那个文档内容中出现过,也就是 "单词 - 文档" 的一种关系矩阵,通过这种关系矩阵,我们就可以根据单词快速获取包含该单词的文档里表(记录),倒排索引主要由两部分组成:"单词字典" 和 "倒排文件"。如下图:

ElaticSearch学习记录(一)-倒排索引_第1张图片

       搜索引擎的索引其实就是实现 "单词 - 文档" 的关系矩阵的具体数据结构,在这个关系矩阵中包含着:关键词(单词)、频次(出现的次数)、id或位置(出现在那个文档中,文档的相关日期、文档的作者等信息)。就好像是在为文档打标签,某个词条出现在了文档中,就在倒排索引的关系矩阵中在这个文档的ID下打个标签,这样就可以根据词条找到文档ID从而找到文档了。

名词解释

  • 词条(Term):索引里面最小的存储和查询单元,对于英文来说是一个单词,对于中文来说一般指分此后的一个词。
  • 词典(Term Dictionary):或称之为字典,是词条的不重复集合。搜索引擎在进行搜索时的搜索单位通常是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向 "倒排列表" 的指针。
  • 倒排表(Post List):一个文档,通常由多个词组成。倒排表记录的是某个词在那些文档里出现过以及出现的位置。每条记录称为一个倒排项,倒排表记录的不单是文档编号,还存储了词频等信息。
  • 倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。

       以上便是倒排索引的入门了解。主要是说明实现原理即可,为后面更好的学习ElaticSearch打下理论基础。

鸣谢

Elasticsearch 技术分析(九):全文搜索引擎Elasticsearch,这篇文章给讲透了! - JaJian - 博客园

搜索引擎技术之倒排索引原理详解_搜狐汽车_搜狐网

遇见狂神说的个人空间_哔哩哔哩_Bilibili

你可能感兴趣的:(ElaticSearch,ElaticSearch,Java,Spring,boot,搜索引擎)