正向索引

  1. mysql 就是采用的正向索引。

倒排索引

  1. 倒排索引重要概念:
    • 文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息。
    • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条。
  2. 创建倒排索引是对正向索引的一种特殊处理:
    • 将每一个文档的数据利用算法分词,得到一个个词条。
    • 创建表,每行数据包括词条、词条所在文档id、位置等信息。
    • 因为词条唯一性,可以给词条创建索引,例如hash表结构索引。

  1. 搜索流程:

  1. 虽然要先查询倒排索引,再查询倒排索引,但是无论是词条、还是文档id都建立了索引,查询速度非常快!无需全表扫描。

正向和倒排

  1. 正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程
  2. 倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程
  3. 正向索引优缺点
    • 优点:可以给多个字段创建索引;根据索引字段搜索、排序速度非常快。
    • 缺点:根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。
  4. 倒排索引优缺点
    • 优点:根据词条搜索、模糊搜索时,速度非常快。
    • 只能给词条创建索引,而不是字段;无法根据字段做排序。