Lucene-7.5.0
Lucene-7.5.0 copied to clipboard
SkipList
lucene里面使用SkipList来加速查找速度,使用有序数组进行两分查找是否比SkipList快 是因为SkipList对于增删的效率比有序数组更快吗?
lucene里面使用SkipList来加速查找速度,使用有序数组进行两分查找是否比SkipList快 是因为SkipList对于增删的效率比有序数组更快吗?
https://www.amazingkoala.com.cn/Lucene/Index/2020/0106/124.html
同问,在生成segment的时候,doc链已经是有序的了,写到文件里面也是顺序写的,感觉可以直接用二分查找也可以?不知道用跳表的好处还有啥呢?
@IcanDoItL 大概原因可能是这个:Block大小是不固定的,需要把所有block都加载到内存,用二分查找成本太高
@wrkaiser 多谢 我再仔细研究一下
@IcanDoItL 大概原因可能是这个:Block大小是不固定的,需要把所有block都加载到内存,用二分查找成本太高
这个解释太妙了
同问,在生成segment的时候,doc链已经是有序的了,写到文件里面也是顺序写的,感觉可以直接用二分查找也可以?不知道用跳表的好处还有啥呢?
可以方便数据插入,跳表即可以快速查找数据(O(logn)),数据插入(O(1))和删除(O(1))也很友好。数组只对查找(O(logn))友好,插入(O(n))和删除(O(n))都会影响性能