首页 > 其他分享 >Elasticsearch快速检索的法宝: 倒排索引

Elasticsearch快速检索的法宝: 倒排索引

时间:2024-03-16 23:29:20浏览次数:32  
标签:检索 词条 倒排 清华大学 查询 索引 文档 Elasticsearch

倒排索引(Inverted Index)是搜索引擎和信息检索系统中的一个关键数据结构,它允许快速进行全文搜索。在倒排索引中,文档的内容被分析并分割成一系列的词条(tokens),然后每个词条被映射到包含它的所有文档列表。

倒排索引的结构

倒排索引通常由两个主要的组件构成:

  1. 词条词典(Term Dictionary):一个包含所有独特词条的集合,通常每个词条都有一个唯一的标识符(如ID)。
  2. 倒排列表(Inverted List):对于词典中的每个词条,都有一个倒排列表,其中包含了所有包含该词条的文档的标识符列表。
    例如,假设我们有以下文档集合:
  • 文档1:我来到北京清华大学
  • 文档2:来到北京不容易
  • 文档3:清华大学是一个好学校
    将这些文档分析并构建倒排索引后,我们可能会得到以下结构:
词条词典:
{
    '我': [1],
    '来到': [1, 2],
    '北京': [1, 2],
    '清华大学': [1, 3],
    '一个': [3],
    '好': [3],
    '学校': [3]
}
倒排列表:
{
    1: ['来到', '北京', '清华大学'],
    2: ['来到', '北京'],
    3: ['清华大学', '一个', '好', '学校']
}

搜索过程

当用户提交一个查询时,搜索系统会解析查询并查找倒排索引中的相关词条。然后,它会收集所有包含这些词条的文档标识符,并按照某种排序策略(如文档得分)返回最相关的文档。

优点

  • 高效检索:倒排索引允许快速的全文搜索,因为只需要遍历倒排列表即可找到包含特定词条的文档。
  • 灵活的查询:支持各种复杂的查询操作,如布尔查询、短语查询、范围查询等。
  • 易于扩展:新文档的添加和旧文档的更新只需要对倒排索引进行简单的修改。

缺点

  • 空间复杂度:倒排索引通常需要大量的存储空间,特别是对于大规模的文档集合。
  • 更新代价:当文档集合发生变化时(如文档添加或删除),倒排索引需要进行相应的更新,这可能是一个代价较高的操作。
    在实际应用中,倒排索引是搜索引擎的核心组成部分,它使得快速、高效的信息检索成为可能。许多流行的搜索引擎系统,如Elasticsearch和Solr,都内置了倒排索引的支持。

标签:检索,词条,倒排,清华大学,查询,索引,文档,Elasticsearch
From: https://blog.csdn.net/willluckysmile/article/details/136772580

相关文章

  • 安装ElasticSearch-RPM
    Architecture:x86-64内存:2GBOperatingSystem:AlibabaCloudLinux3(SoaringFalcon)Kernel:Linux5.10.134-15.al8.x86_64elasticsearch-8.9.0-- 序章elastic.io官网:elasticsearchhttps://www.elastic.co/cn/elasticsearch下载页面:https://www.elastic.co/do......
  • Elasticsearch
    ElasticsearchLucene,Solr,ElasticSearch比较Lucene,Solr,和Elasticsearch是三个与搜索相关的开源项目,它们之间存在紧密的联系,但又有一些区别。以下是它们的比较:Lucene:Lucene是一个Java编写的全文检索引擎库,提供了强大的文本搜索和索引功能。它是一个基础库,提供了......
  • 分布式搜索elasticsearch(1)
    1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容例如:在GitHub搜索代码在电商网站搜索商品 在百度搜索答案在打车软件搜索附近的车1.1.2.ELK技......
  • Elasticsearch 基础-1
    Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引孳,基于RESTfulweb接口。功能:分布式的搜索引擎和数据分析引擎全文检索(like),结构化检索(a=1),数据分析(count/groupby)对海量数据进行近实时的处理(秒级)特点:可拓展性:大型分布式集群(......
  • SAP:检索帮助扩展
    检索帮助扩展(SearchHelpExit)中可以指定函数修改检索帮助的查询条件及结果数据。首先创建函数后练习将此函数分配到检索帮助扩展中的实例。(1)在T-CODE:SE37 函数编辑器中输入Z_EMP函数后单击“创建”按钮。  (2)在“正在更改”标签页中输入参数,如下图所示。(3)在“表”标......
  • Elasticsearch - Docker安装Elasticsearch8.12.2
    前言最近在学习ES,所以需要在服务器上装一个单节点的ES服务器环境:centos7.9安装下载镜像目前最新版本是8.12.2dockerpulldocker.elastic.co/elasticsearch/elasticsearch:8.12.2创建配置新增配置文件elasticsearch.ymlhttp.host:0.0.0.0http.cors.enabled:true......
  • 数据库不应放在容器中?- B站Kubernetes有状态服务实践(Elasticsearch/Clickhouse)
    本期作者前言云原生时代下,Kubernetes已成为容器技术的事实标准, 使得基础设施领域应用下自动化运维管理与编排成为可能。对于无状态服务而言, 业界早已落地数套成熟且较完美的解决方案。可对于有状态的服务, 方案的复杂度就以几何倍数增长, 例如分布式应用多个实例间的依......
  • Elasticsearch:调整搜索速度
    在我之前的文章“Elasticsearch:如何提高查询性能”及“Elasticsearch:提升Elasticsearch性能”里,我详细描述了如何提高搜索的性能。在今天的文章里,我从另外一个视角来描述如何调整搜索的速度。希望对大家有所帮助!为文件系统缓存提供内存Elasticsearch严重依赖文件系......
  • ElasticSearch高可用部署
    简单说明我们在部署ElasticSearch高可用集群时,要规划好集群的规模,每个节点的职责,规划好后续的水平扩展方案,再进行部署。核心概念Cluster:集群,由一个或多个Elasticsearch节点组成。Node:节点,组成Elasticsearch集群的服务单元,同一个集群内节点的名字不能重复。通常在一个节点......
  • Rancher怎么设置把日志发送给elasticsearch
    搭建elascsearch集群不详述配置日志发送打开日志Rancher配置日志发送其实时在node启用了Daemonset使用fluentd进行日志收集#kubectlgetdaemonset-ncattle-loggingNAMEDESIREDCURRENTREADYUP-TO-DATEAVAILABLEN......