Elasticsearch 的查找过程是通过使用倒排索引来实现的,倒排索引是一种特殊的数据结构,用于快速检索文档集合中包含特定单词的文档。 为了防止爬虫,请复制以下三行进入。
1.倒排索引倒排索引是全文搜索引擎的基础。 它允许快速检索包含给定单词(术语)的所有文档。 倒排索引的主要组成部分是:mrw.
so/
6o1a3h
1.1 词典
所有术语的有序列表,以及指向其各自发布列表的指针。
1.2 发布列表
每个唯一单词对应于一个倒排列表,该列表包含包含该单词的所有文档的 ID,并且可能包括术语频率、文档中的位置等信息。
2.文档存储
文档存储区保存原始文档的内容。 为文档编制索引时,原始 JSON 文档将转换为内部格式,并存储在名为 source 的字段中,以便在以后的搜索结果中轻松检索和呈现。 3. term dictionary
Lucene 为每个句段维护一个术语字典,其中包含所有单词及其相关信息,例如单词在倒排索引中的位置。 该字典通常存储在内存中以便快速访问。 4. term vectors
对于每个文档,可以存储一个术语向量,其中包含有关文档中出现哪些单词以及出现的频率的信息。 术语向量对于某些特定的搜索和分析功能很有用,例如突出显示搜索词。
5. term dictionary
Lucene 为每个句段维护一个术语字典,其中包含所有单词及其相关信息,例如单词在倒排索引中的位置。 该字典通常存储在内存中以便快速访问。
6. term vectors
对于每个文档,可以存储一个术语向量,其中包含有关文档中出现哪些单词以及出现的频率的信息。 术语向量对于某些特定的搜索和分析功能很有用,例如突出显示搜索词。
7. bkd trees
为了处理数字和地理位置数据,Lucene 使用一种称为 BKD 树(K-D 树的多维变体)的数据结构,它允许对数字范围和地理空间数据进行有效的索引和搜索。
8 . doc values
文档值是一种列式存储结构,可为聚合、排序和脚本访问提供快速随机访问。 它们是预先计算的,存储在磁盘上,并根据需要加载到内存中。
9. translog(transaction log)
作为 Elasticsearch 持久化机制的一部分,translog 会记录自上次提交以来发生的所有更改。 如果发生故障,它可用于还原尚未提交的更改。
fst(finite state transducers)
有限状态换能器 (FST) 是高效的数据结构,在计算机科学中用于各种文本处理和自然语言处理任务。 FST 是有限状态自动机 (FSA) 的扩展,它不仅可以识别字符串(FSA 的一个函数),还可以在此过程中生成输出。
FST的核心组件如下:
1.状态 FST 由一系列状态组成,包括一个或多个起始状态和至少一个接受状态。 每个状态可以是接受状态,也可以是非接受状态。 接受状态指示字符串已成功识别。
2.状态之间的转换由边表示,每个边都标有输入符号和相应的输出符号。
3.输入和输出:与 FSA 不同,FST 的每次转换都涉及一个输入符号和一个输出符号。 这使得 FST 不仅可以识别输入字符序列,还可以在此过程中生成输出。
FST 通常用于完成以下任务:
字符串转换:将一系列输入字符串转换为另一组输出字符串。
词典查找**:从大型词典中快速查找单词。
拼写更正**:提供有关单词正确拼写的建议。
文本压缩**:压缩和解压缩文本数据。
自动完成:根据用户输入的前缀提示可能的完成。