首页 > 其他分享 >elasticsearch之倒排索引

elasticsearch之倒排索引

时间:2024-10-16 10:34:53浏览次数:6  
标签:搜索 词条 倒排 索引 文档 elasticsearch 分词

倒排索引

elasticsearch有如此高的搜索性能,无异于使用了倒排索引。
倒排索引中有两个重要的概念:

  • 文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息
  • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条

创建倒排索引是对正向索引的一种特殊处理和应用,流程如下:

  • 将每一个文档的数据利用分词算法根据语义拆分,得到一个个词条
  • 创建表,每行数据包括词条、词条所在文档id、位置等信息
  • 因为词条唯一性,可以给词条创建正向索引
    此时形成的这张以词条为索引的表,就是倒排索引表,两者对比如下:
    image

在这里提一下,正向索引就是一张数据库创建的表

倒排索引的流程

这里以搜索华为手机为例

  • 第一步用户输入华为手机进行搜索
  • 第二步对用户输入的条件进行分词,分词结果为“华为”,“手机”
  • 第三步在倒排索引中查询词条对应的文档id
  • 上一步查询到的对应的文档id,可以通过正向索引来查询具体的文档

下面用一个流程图来介绍:
image

标签:搜索,词条,倒排,索引,文档,elasticsearch,分词
From: https://www.cnblogs.com/fangbianmian/p/18469290

相关文章

  • 倒排索引
    倒排索引:‌倒排索引(InvertedIndex)‌是一种索引方法,主要用于存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是由属性值来确定记录的位置,而不是由记录来确定属性值,因此被称为倒排索引。倒排索引被广泛应用于‌文档检索系统中,是文档检索系统中常用的数据结......
  • 软件测试笔记|数据库基础|创建索引的原则
    创建数据库索引有以下原则:一、选择合适的列创建索引1.选择经常用于查询条件的列:如果某一列经常在WHERE子句中作为条件出现,那么为该列创建索引可以大大提高查询速度。例如,在一个员工表中,如果经常根据员工的姓名进行查询,那么为“姓名”列创建索引是一个不错的选择。2.选择......
  • Elasticsearch(一)
    ES相关概念对比MySQLElasticsearch(ES):用于数据存储、计算和搜索安装ES:ES是部署在Linux操作系统下的,可以通过Docker去部署:首先引入ES的镜像,可以官网下载或者用dockerpull拉取镜像可以执行该命令,注意es版本dockerrun-d\--namees\-e"ES_JAVA_OPTS=-Xms512m-Xmx512......
  • ElasticSearch的倒排索引和相关概念与MySQL的对比
    ElasticSearch的倒排索引和相关概念在用关系型数据库时,一些频繁用作查询条件的字段我们都会去建立索引来提升查询效率。在关系型数据库中,我们一般都采用B树索引进行存储,所以B树索引也是我们接触比较多的一种索引数据结构,但是在使用过程中,我们发现无法使用关系型数据库进行类......
  • Elasticsearch 倒排索引,ES相关概念对比MySQL
    elasticsearch之所以有如此高性能的搜索表现,正是得益于底层的倒排索引技术。什么是倒排索引?倒排索引的概念是基于MySQL这样的正向索引而言的。倒排索引中有两个非常重要的概念:文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息词条(Te......
  • Elasticsearch相关概念对比MySQL
    Elasticsearch相关概念对比MySQLElasticsearch中,文档指的是每一条数据,例如:我喜欢你。词条指的是将文档拆分成有意义的词语,例如之前的文档可拆成4个词条:我、喜欢、你。MySql中的概念Elasticsearch中的概念Table表Index索引,文档的集合Row一行行数据Document文档......
  • Elasticsearch介绍
    Elasticsearch是一个分布式搜索和分析引擎,通常用于处理大规模的结构化和非结构化数据。它基于开源的Lucene库,提供了强大、实时的搜索能力和精细的分析功能。Elasticsearch通常与其他工具(如Logstash、Kibana等)一起使用,构成了著名的ELKStack(后来改名为ElasticStack)。完整......
  • MySQL 唯一索引和普通索引
    唯一索引和普通索引的区别查询过程基本没有区别selectidfromTwherek=5InnoDB数据的读写单位是数据页,默认是16KB。更新过程普通索引可以使用changebuffer(会持久化),唯一索引不行。当需要更新一个数据页是,如果数据页在内存中就直接更新,如果数据页还没在内存中,在不......
  • Elasticsearch
    什么是ElasticsearchElasticsearch是一个基于ApacheLucene的分布式搜索和分析引擎。它提供了一个功能强大、实时的数据存储、检索和分析的平台,尤其适合处理结构化和非结构化数据。它在大数据处理、全文搜索****、实时日志分析、监控等场景下应用广泛。核心概念索引(Index):相......
  • MySQL 选错索引
    查看执行计划选择的索引explainselect*fromtwhereabetween10000and10000;通过慢日志(slowlog)查看语句执行情况--启动慢日志SHOWVARIABLESLIKE'slow_query_log';--慢日志存储位置SHOWVARIABLESLIKE'slow_query_log_file';--慢日志阈值SHOWVARIABLES......