1.区别缓存
搜索的时候,要依靠倒排索引;排序的时候,须要依靠正排索引,看到每一个document的每一个field,而后进行排序,所谓的正排索引,其实就是doc values并发
在创建索引的时候,一方面会创建倒排索引,以供搜索用;一方面会创建正排索引,也就是doc values,以供排序,聚合,过滤等操做使用性能
doc values是被保存在磁盘上的,此时若是内存足够,os会自动将其缓存在内存中,性能仍是会很高;若是内存不足够,os会将其写入磁盘上spa
下面两条documentcode
doc1: hello world you and me
doc2: hi, world, how are youorm
2.倒排索引,用来进行搜索blog
word doc1 doc2 hello * world * * you * * and * me * hi * how * are *
3.正排索引,用来进行排序排序
document name age doc1 jack 27 doc2 tom 30
sort by age,取出age进行排序索引
4.倒排索引的结构 内存
(1)包含这个关键词的document list
(2)包含这个关键词的全部document的数量:IDF(inverse document frequency)
(3)这个关键词在每一个document中出现的次数:TF(term frequency)
(4)这个关键词在这个document中的次序
(5)每一个document的长度:length norm
(6)包含这个关键词的全部document的平均长度
5.倒排索引不可变的好处和坏处
(1)不须要锁,提高并发能力,避免锁的问题
(2)数据不变,一直保存在os cache中,只要cache内存足够
(3)filter cache一直驻留在内存,由于数据不变
(4)能够压缩,节省cpu和io开销
倒排索引不可变的坏处:每次都要从新构建整个索引