Nero5023 / bplustree

In memory b+tree implementation for python
16 stars 3 forks source link

B+树范围查找 #1

Open ffqq16 opened 2 weeks ago

ffqq16 commented 2 weeks ago

运行了您的代码,对我来说帮助特别大。另外想问您的是有没有范围查找的代码,因为在您的代码中只有大于/小于等于

Nero5023 commented 1 week ago

你好,很高兴听到我的代码对你有帮助! 这个是我好久之前写的了,我可能没有时间来加这个 feature,但是我可以给你个思路 比如你要 search [a, b] 可以参照这个 function https://github.com/Nero5023/bplustree/blob/0b5812d8082dd09bc860f19a87e17b1b1ff12c3a/bplus_tree/node.py#L70-L82 可以找到这个 range 的起始点 a,然后往右边 遍历 到 b 如何遍历,可以参照这个
https://github.com/Nero5023/bplustree/blob/0b5812d8082dd09bc860f19a87e17b1b1ff12c3a/bplus_tree/node.py#L98-L108 但要先看 https://github.com/Nero5023/bplustree/blob/0b5812d8082dd09bc860f19a87e17b1b1ff12c3a/bplus_tree/node.py#L82 这里的 items 能不能 cover 你的 range,如果没有 cover,就继续往右遍历

另外一个更好的做法是,找到起始点 a,然后直接然后一个 iterator, iterator 的终止条件就是 结束的位置 b