Lucene - 四句话理解基本原理与策略

Lucene实现快速搜索的策略:

文本链表建立

建立每个词对应的文本链表,在多条件查找时,对单词对应的链表做交并差操作,虽然索引的建立较为复杂,但只需建立一次,便可反复使用。

分段存储

早期的全文检索中,为整个文档集合创建了很大的倒排索引,由于创建索引成本很高,在数据更新频繁时,无法保证时效性,因此引入了分段存储。

分段存储将文件分为段,有新数据需要创建时新增一个段,由于段的不可变性,需要删除时不会真正删除,而是新增了.del文件,用来专门存储需要删除的数据id,只在文档链表做操作时,才把已经删除的数据过滤掉。对文件的更新操作实际上是删除和新增的组合。

延迟写

为了提升性能,当有新增数据时,先写入内存中,此时只有写权限,没有读权限,随后生成一个提交点,批量写入磁盘中,此时只有读权限,没有写权限,因此从严格意义上来说,Lucene属于准实时的搜索引擎。

段合并
分段能够提高效率,但随着时间增加,段会越来越多,在索引中会存在大量段,不仅会消耗服务器资源,还会影响性能,因此存在段合并策略。为了控制索引段的数量,需要定期进行段合并,并避免合并较大的段引起资源浪费。主要思路是:根据段的大小先将段分组,再将属于同一组的段合并,但在段的大小达到一定规模。或段中数据量达到一定条数时,不再进行合并。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值