文章目录
早期的全文检索
- 早期的全文检索
- 动态更新索引
早期的全文检索是把整个文档集合建一个很大的倒排索引写入磁盘, 一旦新的索引就绪, 就的会被替换, 这样就能检索新的数据.
这样做倒排索引写入磁盘后, 就不会变化, 不可变的好处
- 不需要锁, 不用担心多线程并发修改
- 由于其不变, 可以把数据写入缓存, 并且缓存也不存在一致性问题, 提升性能.
- 其他缓存, 在索引的生命周期内始终有效, 不需要每次修改数据时重新建立.
- 单个大的倒排索引数据会被压缩, 减少磁盘的I/O, 和需要被缓存到内存的索引使用量.
不可变的坏处: 由于不可变, 不能修改, 只能重新建立一个新的索引. 如果频繁更新数据, 那么性能极差.
动态更新索引保留不可变的前提下, 实现倒排索引更新? 新的索引使用补充索引, 老的索引不动.
查询的时候 , 按段查询, 每一段是一个倒排索引.
由于不可变性, 删除某个文档时, 只是加标记, 而不是物理删除. 当有多个倒排索引合并的时候, 会把真正需要删除的数据进行删除.