倒排索引是搜索引擎中最核心的技术之一,是搜索引擎的基石。正因为有了倒排索引这项技术才使得对数据库的查询、删除 *** 作变得更加高效。
倒排索引源于实际应用中需要根据属性的值来查找记录的需求,就是需要根据一段单词或者文字来查询数据库中有那些记录(文档)中包含这些文字。类似于MySQL中的模糊查询(like)。正常我们是根据内容去查询该内容中是否包含某个值,倒排索引是根据值来查询那些内容中包含这些值,所以被称之为倒排索引。
原理我们来根据下面的例子来理解倒排索引的工作原理。
- 崔二旦喜欢Java
- Java 是开发语言
- 张三喜欢Java开发语言
在创建倒排索引的时候,我们需要通过分词器将每个文档的内容拆分成单独的词(这里称之为词条或单词),创建一个包含所有不重复词条的排序列表,然后列出每个词条在那个文档内容中出现过,也就是 "单词 - 文档" 的一种关系矩阵,通过这种关系矩阵,我们就可以根据单词快速获取包含该单词的文档里表(记录),倒排索引主要由两部分组成:"单词字典" 和 "倒排文件"。如下图:
搜索引擎的索引其实就是实现 "单词 - 文档" 的关系矩阵的具体数据结构,在这个关系矩阵中包含着:关键词(单词)、频次(出现的次数)、id或位置(出现在那个文档中,文档的相关日期、文档的作者等信息)。就好像是在为文档打标签,某个词条出现在了文档中,就在倒排索引的关系矩阵中在这个文档的ID下打个标签,这样就可以根据词条找到文档ID从而找到文档了。
名词解释- 词条(Term):索引里面最小的存储和查询单元,对于英文来说是一个单词,对于中文来说一般指分此后的一个词。
- 词典(Term Dictionary):或称之为字典,是词条的不重复集合。搜索引擎在进行搜索时的搜索单位通常是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向 "倒排列表" 的指针。
- 倒排表(Post List):一个文档,通常由多个词组成。倒排表记录的是某个词在那些文档里出现过以及出现的位置。每条记录称为一个倒排项,倒排表记录的不单是文档编号,还存储了词频等信息。
- 倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。
以上便是倒排索引的入门了解。主要是说明实现原理即可,为后面更好的学习ElaticSearch打下理论基础。
鸣谢Elasticsearch 技术分析(九):全文搜索引擎Elasticsearch,这篇文章给讲透了! - JaJian - 博客园
搜索引擎技术之倒排索引原理详解_搜狐汽车_搜狐网
遇见狂神说的个人空间_哔哩哔哩_Bilibili
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)