发布网友 发布时间:2024-11-27 10:27
共1个回答
热心网友 时间:2024-12-27 14:07
引言:在深入 Elasticsearch 的 Query DSL 前,理解“倒排序索引”与“Analysis”至关重要,以助于检索理解与应用。
一、倒排索引是什么?
倒排索引,Elasticsearch 中的核心索引结构,其特点是从文档单词到文档 ID 的映射。举个专栏文章检索的例子,当我们在各大平台使用关键词搜索时,便应用了倒排序索引技术。
以关系型数据库 MySQL 的索引为例,“id->题目->内容”形式的索引在已知 id 或题目时检索效率极高。但若仅有一个检索关键词,例如搜索“倒排序索引”相关文章,则无法通过 id 或题目索引快速定位,需对整个内容进行扫描,效率低效。为解决这类需求,全文搜索的倒排索引结构应运而生。
倒排索引的核心是建立“关键词->文档 ID”的映射关系,从而实现以关键词检索,大幅提升效率。
二、倒排索引是如何工作的?
倒排索引构建与搜索过程分为两步:构建倒排索引与倒排索引搜索。
1、构建倒排索引:对文档内容进行分词,形成 token(单词),保存 token 与文档的对应关系。
2、倒排索引搜索:通过关键词检索,返回匹配文档。
三、Analysis 进行分词
Analysis,即文本分析,是将全文转化为一系列单词的过程。在 Elasticsearch 中,通过内置分词器实现或自定义分词器。
Analyzer 由三部分构成:Character Filters、Tokenizer、Token Filters。
Character Filters 负责原始文本处理,如去除 HTML;Tokenizer 则依据规则将文本分割为单词;Token Filters 对单词进行加工,如转小写、删除 stop words、增加同义词。
Analyzer 分词过程概述如下:
首先,字符串通过每个 Character Filters 处理,整理文本内容。
其次,字符串被 Tokenizer 分解为单个词条。
最后,词条经 Token Filters 加工,可能包括转小写、删除无用词、增加同义词等。