Elasticsearch 篇之倒排索引与分词

书的目录与索引

正排索引

  • 文档Id到文档内容、单词的关联关系
文档Id 文档内容
1 elasticsearch是最流行的搜索引擎
2 php是世界上最好的语言
3 搜索引擎是如何诞生的

倒排索引

  • 单词到文档id的关联关系
单词 文档ID列表
elasticsearch 1
流行 2
搜索引擎 1,3
php 2
1,2,3

正排与倒排索引简介

Elasticsearch 篇之倒排索引与分词
查询包含"搜素引擎"的文档

  • 通过倒排索引获得"搜索引擎"对应的文档Id有1和3
  • 通过正排索引查询1和3的完整内容
  • 返回用户最终结果

倒排索引详解

倒排索引组成

  • 单词词典(Term Dictionary)是倒排索引的重要组成
    • 记录所有文档的单词,一般都比较大
    • 记录单词到倒排列表的关联信息
    • 单词字典的实现一般是用B+ Tree,示例如下图: Elasticsearch 篇之倒排索引与分词
  • 倒排列表(Posting List)记录了单词对应的文档集合,由倒排索引项(Posting)组成
    • 倒排索引项(Posting)主要包含如下信息:
      • 文档Id,用于获取原始信息
      • 单词频率(TF,Term Frequency):记录改单词在该文档中出现次数,用于后继相关性算分
      • 位置(Position):记录单词在文档中的分词位置(多个),用于做词语搜索(Phrase Query)
      • 偏移(Offser):记录单词在文档的开始和结束位置,用于做高亮显示
    • 以"搜索引擎"为例
      Elasticsearch 篇之倒排索引与分词
    • 倒排索引与倒排列表整合在一起的结构如下:
      Elasticsearch 篇之倒排索引与分词
    • es存储的是一个json格式的文档,其中包含多个字段,每个字段会有自己的倒排索引。
      Elasticsearch 篇之倒排索引与分词

分词介绍

analyze_api

自带分词器

中文分词

自定义分词之CharacterFilter

自定义分词之Tokenizer

自定义分词之 TokenFilter

自定义分词

分词使用说明

官方文档说明

相关文章: