首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
bkd专题
ElasticSearch搜索进阶之路之高维数据的BKD树结构
ElasticSearch中高维数据的BKD树结构 KD树与BKD树简介 BKD树,全称为b-树形kd树(bushy kd-trees),是一种用于高维数据搜索的数据结构。它是基于kd树(k-dimensional tree)的改进版本。 KD树结构: kd树是一种二叉树结构,将数据按特征空间划分区域,支持快速最近邻搜索。每个节点代表一个k维点,通过特征轴划分形成二叉树。搜索最近邻时,
阅读更多...
ElasticSearch学习篇10_Lucene数据存储之BKD动态磁盘树(论文Bkd-Tree: A Dynamic Scalable kd-Tree)
前言 基础的数据结构如二叉树衍生的的平衡二叉搜索树通过左旋右旋调整树的平衡维护数据,靠着二分算法能满足一维度数据的logN时间复杂度的近似搜索。对于大规模多维度数据近似搜索,Lucene采用一种BKD结构,该结构能很好的空间利用率和性能。 本片博客主要学习常见的多维数据搜索数据结构、KD-Tree的构建、搜索过程以针对高维度数据容灾的优化的BBF算法,通过读论文学习BKD结构原理,总结对数算法
阅读更多...
Lucene 源码分析——BKD-Tree
Lucene 源码分析——BKD-Tree - AIQ Bkd-Tree Bkd-Tree作为一种基于K-D-B-tree的索引结构,用来对多维度的点数据(multi-dimensional point data)集进行索引。Bkd-Tree跟K-D-B-tree的理论部分在本篇文章中不详细介绍,对应的两篇论文在附件中,感兴趣的朋友可以自行下载阅读。本篇文章中主要介绍Bkd-Tree在Luce
阅读更多...
ElasticSearch学习篇10_Lucene数据存储之BKD动态磁盘树
前言 基础的数据结构如二叉树衍生的的平衡二叉搜索树通过左旋右旋调整树的平衡维护数据,靠着二分算法能满足一维度数据的logN时间复杂度的近似搜索。对于大规模多维度数据近似搜索,Lucene采用一种BKD结构,该结构能很好的空间利用率和性能。 本片博客主要学习常见的多维数据搜索数据结构、KD-Tree的构建、搜索过程以针对高维度数据容灾的优化的BBF算法,以及BKD结构原理。 感受 算法之美 结
阅读更多...
ElasticSearch学习篇8_Lucene之数据存储(Stored Field、DocValue、BKD Tree)
前言 Lucene全文检索主要分为索引、搜索两个过程,对于索引过程就是将文档磁盘存储然后按照指定格式构建索引文件,其中涉及数据存储一些压缩、数据结构设计还是很巧妙的,下面主要记录学习过程中的StoredField、DocValue以及磁盘BKD Tree的一些相关知识。 参考: https://juejin.cn/post/6978437292549636132https://juejin.
阅读更多...