全文搜索的工作原理
Elastic Stack 无服务器
下图说明了全文搜索的组成部分。
总的来说,全文搜索涉及以下内容
- 文本分析:分析包括一系列顺序转换的管道。文本被转换成一种为搜索优化的格式,使用的技术包括词干提取、小写转换和停用词消除。Elasticsearch 包含许多内置的 分析器和分词器,包括分析特定语言文本的选项。您还可以创建自定义分析器。
提示
请参阅 测试分析器,了解如何测试分析器并检查它生成的令牌和元数据。
倒排索引创建:分析完成后,Elasticsearch 会从生成的令牌构建倒排索引。倒排索引是一种数据结构,它将每个令牌映射到包含它的文档。它由两个关键组件组成
- 字典:索引中所有文档集合中所有唯一术语的排序列表。
- 倒排列表:对于每个术语,该术语出现的文档 ID 列表,以及可选的元数据,如术语频率和位置。
相关性评分:结果按它们与给定查询的相关性进行排序。每个文档的相关性得分由一个称为
_score
的正浮点数表示。_score
越高,文档的相关性就越高。Elasticsearch 用于计算相关性分数的默认 相似度算法 是 Okapi BM25,它是 TF-IDF 算法 的变体。BM25 基于术语频率、文档频率和文档长度计算相关性分数。有关 BM25 的深入探讨,请参阅此 技术博客文章。
全文搜索查询:查询文本经过 与索引文本相同的方式分析,生成的令牌用于搜索倒排索引。
Query DSL 支持许多 全文查询。
从 8.17 开始,ES|QL 也支持 全文搜索 函数。