lucene如何实现准实时索引?
Lucene 把每次生成的倒排索引,叫做一个段(segment)。然后另外使用一个 commit 文件,记录索引内所有的 segment。而生成 segment 的数据来源,则是内存中的 buffer。也就是说,动态更新过程如下
当前索引有 3 个 segment 可用。索引状态如图
新接收的数据进入内存 buffer。索引状态如图
既然涉及到磁盘,那么一个不可避免的问题就来了:磁盘太慢了!对我们要求实时性很高的服务来说,这种处理还不够。所以,在第 3 步的处理中,还有一个中间状态:
内存 buffer 刷到磁盘,生成一个新的 segment,commit 文件同步更新。