相信很多接触es的同志,在了解到segments的时候只是模糊的知道这是索引文件,也知道refrash和flush,确再说点什么就不知道了,今天我就基于luence来浅谈一下这个到底是个什么东西。
首先搜索引擎,是基于倒排索引来提供搜索功能的,要做到这一点首先就是对输入数据进行分词 提起,建立词项词频,然后将这些信息存储起来,当你搜索的时候给你提供搜索结果。
1:浅谈倒排索引
加入你想要从大量的文件中搜索出来包好某个短语的文件你会怎么做呢?最初级的想法就是,顺序的遍历整个目录下的文件,然后读取出来进行匹配,然后返回包含搜索结果的文件名,这是最初级的想法,相信你读到这里也会点头的。不过这个方法有很多的缺陷,想象一下如果数据量巨大的话,你这个方法会慢成什么样,不仅要便利目录还要逐个读取匹配 ,额想想就蛋疼。而这个就是索引技术解决的问题。 举个例子来说,索引就像你为一本书建立了一个目录,然后把文本转换成你能快速搜索到的格式,这个转换过程就叫做倒排索引技术。 你可以把倒排索引想像成一种数据结构,这种结构允许你对其中的数据进行快速检索。 索引就是这么一个精心设计的倒排索引结构,存储在文件系统中,允许你搜索,要比你顺序便利匹配快的多的多啊。就像你用字典查询一个汉字,是一页一页快还是通过目录的拼音结