1.什么是倒排索引
Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。
正排索引:通过文档查找KEY,优点:易维护,每新增一个doc只需要把每个key在该doc中出现的次数和位置进行维护即可;缺点:搜索耗时太长
倒排索引:通过KEY来查找doc,用户在搜索引擎搜索框输入查询词进行搜索时,搜索引擎会对查询词进行切词以及近义词匹配等操作,根据原始查询词得到一系列的单词列表。然后根据搜索引擎内部的字典来查询每个单词对应的倒排列表,从而定位到包含这个单词的网页或者说是文档。最后搜索引擎根据特定的网页排序算法将查询到的网页进行排序,通过前端将搜索结果展示给用户
优点:搜索效率高;
缺点:维护成本高,每新增一个doc,需要维护整key——doc矩阵
搜索引擎要面临海量的数据搜索,尽量将大运算量的工作在创建索引时完成,使检索时间尽量的少,将搜索做到极致,而传统关系型数据的功能大而全,针对的业务场景不一样。
倒排列表用来记录有哪些文档包含了某个单词。一般在文档集合里会有很多文档包含某个单词,每个文档会记录文档编号(DocID)