MST
星途 面试题库

面试题:ElasticSearch倒排索引机制的基本原理是什么

请详细阐述ElasticSearch中倒排索引机制的基本原理,包括文档如何被处理、词条如何生成以及倒排索引表的结构等方面。
11.9万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

文档处理

  1. 文本提取:当一个文档被添加到ElasticSearch时,首先会从文档中提取文本内容。例如,对于一个包含多种格式(如HTML、PDF等)的文档,会先将其转换为纯文本。
  2. 分词:提取的文本会被传递给分词器(Tokenizer)。分词器按特定规则将文本拆分成一个个单词或术语,这些单词或术语称为词条(Term)。比如对于句子 “The quick brown fox jumps over the lazy dog”,英文分词器可能会将其分成 “the”“quick”“brown”“fox”“jumps”“over”“lazy”“dog” 等词条。

词条生成

  1. 标准化:生成的词条可能会经过标准化处理,如将所有字母转换为小写,去除停用词(如 “the”“a”“an” 等在搜索中通常不重要的词)。例如,处理后 “The” 会变成 “the”,并且 “the” 可能会因是停用词而被去除。
  2. 词干提取或词形还原:对于一些语言,可能会进行词干提取(如将 “running” 转换为 “run”)或词形还原(如将 “goes” 还原为 “go”),以确保同一词的不同形式能被关联起来。

倒排索引表结构

  1. 词条字典:倒排索引的核心部分是一个词条字典(Term Dictionary),它包含所有唯一的词条。这个字典通常采用高效的数据结构(如FST - Finite State Transducer)存储,以支持快速的查找。每个词条在字典中有一个对应的指针,指向包含该词条的文档列表。
  2. 文档列表(Postings List):对于每个词条,都有一个与之关联的文档列表,也叫Postings List。列表中记录了包含该词条的所有文档的信息,一般包括文档ID、词条在文档中的位置(可选,用于短语搜索等)、词条出现的频率等。例如,对于词条 “fox”,其Postings List可能包含文档ID为1、3、5的文档,以及 “fox” 在这些文档中的出现频率和位置等数据。这样当进行搜索时,通过词条字典快速定位到相关词条,再从其Postings List获取包含该词条的文档,从而实现高效的搜索。