首页 > 其他分享 >倒排索引关键点普及

倒排索引关键点普及

时间:2024-03-20 15:46:38浏览次数:15  
标签:存储 倒排 索引 fst 内存 词项 关键点

 

倒排索引

倒排索引是什么?为什么es、hbase、doris、starrocks都有倒排索引?

倒排索引(英文:Inverted Index),是一种索引方法,常被用于全文检索系统中的一种单词文档映射结构。现代搜索引擎绝大多数的索引都是基于倒排索引来进行构建的,这源于在实际应用当中,用户在使用搜索引擎查找信息时往往只输入信息中的某个属性关键字,如一些用户不记得歌名,会输入歌词来查找歌名;输入某个节目内容片段来查找该节目等等。面对海量的信息数据,为满足用户需求,顺应信息时代快速获取信息的趋势,聪明的开发者们在进行搜索引擎开发时对这些信息数据进行逆向运算,研发了“关键词——文档”形式的一种映射结构,实现了通过了物品属性信息对物品进行映射,可以帮助用户快速定位到目标信息,极大地降低了信息获取难度。倒排索引又叫反向索引,它是一种逆向思维运算,是现代信息检索领域里面最有效的一种索引结构。

倒排索引组成

 

倒排表:posting list : int有序数组,存储匹配某个item的所有的id,使用roaring bitmaps,frame of reference压缩算法,具体算法可以自行百度,

倒排索引 词项字典term dictionary :

词项索引 term index : 极大的节约内存,使用fst压缩算法,最大可达20倍,,性能不如hashmap,但也很不错

 

fst构建原理

使用fst算法将词项字段和词项索引存储在内存中,由于压缩倍率大,十亿个词项字典进行fst解析之后,存储在内存中也就1G大小,fst是如何将词项字典和词项索引进行映射的呢? 由于所有英文,或者中文进行解析之后,最终都是有26个英文字母对应,由于fst算法能复用后缀和前缀,因此极大节约了结构树的长度,使得最终存储在内存中,相比普通tree存储节省了内存。下图所示:

 

 

标签:存储,倒排,索引,fst,内存,词项,关键点
From: https://www.cnblogs.com/Jcloud/p/18085370

相关文章

  • MySQL 索引的10 个核心要点
    文章目录......
  • [数组练习题]二分法查找操作实例:使用二分法查找有序数组中元素。 找到返回索引,不存在
    文章目录题干一、题目分析1.定义数组,用于后续在数组中查找元素2.对数组进行排序3.定义方法4.调用方法,打印输出二、代码1.代码块2.一图流总结题干提示:这段是题干,仔细阅读仔细分析:二分法查找操作:使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。......
  • 索引类型及其应用场景与作用
    索引是数据库管理系统中用于加快数据检索速度的一种数据结构。不同类型的索引适用于不同的应用场景,下面将详细介绍几种常见的索引类型及其作用。1.B树索引应用场景:当数据表的数据量较大时。对于经常需要进行等值比较的查询操作。作用:B树索引通过平衡树结构,减少数据检索......
  • openGauss Index-advisor_索引推荐
    Index-advisor:索引推荐可获得性本特性自openGauss1.1.0开始引入。特性简介Index-advisor工具是一个覆盖多种任务级别和使用场景的数据库智能索引推荐工具,其具备单Query索引推荐功能、虚拟索引功能、workload级别索引推荐功能,可以为用户提供可靠的索引建议。客户价值为客户提......
  • 数据库查询优化:解析不使用索引的场景及对策
    数据库索引的目的是为了加快查询速度,但在某些情况下,查询可能不会使用索引,即所谓的“不走索引”。以下是一些可能导致数据库查询不使用索引的情况:全表扫描:当查询条件中的字段没有建立索引,或者查询的条件是对整个表进行范围查询(如使用 BETWEEN),数据库可能会选择全表扫描而不是使......
  • mysqly索引(explain 执行计划)
    关键词执行计划EXPLAIN+语句查看mysql优化后的语句showwarnings;EXPLAIN执行后,各列的含义要点:select_type如何查询表type如何查询行key如何使用索引key_len索引使用多少rows行预计使用多少extra表的额外信息1.idid列的编号是select的序列号......
  • MySQL系列:索引失效场景总结
    相关文章数据库系列:MySQL慢查询分析和性能优化数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能数据库系列:前缀索引和索引长度的取舍数据库系列:My......
  • mysql索引(索引失效,遵循最左前缀,使用1.全值匹配 2.覆盖索引,失效:索引加函数,范围查询右边
    1.遵循联合索引最左列原则当表中创建了一个联合索引idx_name_age_position案例演示1.当我们在执行sql语句:以name为where条件时,我们可以用到索引EXPLAINSELECT*FROMemployeesWHEREname='LiLei';2.当我们在执行sql语句:以age为where条件时,索引就会失效......
  • 【PostgreSQL PGCE-091题目解析14】PostgreSQL中使用CONCURRENTLY选项创建索引时,允许
    本文为云贝教育刘峰(微信:yunbee_DBA)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。PostgreSQL中使用CONCURRENTLY选项创建索引时,允许增删改数据表。A.正确B.错误参考答案:A解析:我们知道,PG是有行级琐的,在创建索引的时候,会在行上加琐......
  • 初窥-openGauss-之索引推荐Index-advisor
    初窥openGauss之索引推荐Index-advisorTPC-H是一个面向分析型业务(AP)的基准测试,它由一系列热点查询组成,这些热点查询都是高度复杂的,因此执行时间往往都比较长。在本次实验测试中,将手动向数据库加载TPC-H数据,并保存在名为tpch的数据库中。默认TPC-H数据库的表缺少索引......