是否有人知道在SQL中实现的KD-Tree或类似的空间索引?我正在考虑使用Python和Django的ORM编写自己的,但我想避免重新发明轮子。
我有一个包含数百万行的表,每行包含128列代表图像特征数据。给定一个128元素长的任意图像特征列表,我想使用KD树来查找数据库中N个最相似的图像。我发现了很多KD-Tree实现,但它们似乎只加载到本地内存中,不会扩展或与数据库通信。
答案 0 :(得分:4)
KD-tree不适用于高维数据,128维度非常高。 KD树将每个维度索引到树的不同级别,并且在执行查询时,算法将执行大量的反向跟踪(搜索分支的两侧)并最终搜索树中的大多数点。当发生这种情况时,使用树形结构的优势消失,并且详尽的比较最终会更快地运行。
您可能希望找到可以将数据映射到的现有图像相似性搜索系统。 Here is one called Lire从图像中提取特征并使用Lucene对其进行索引。
如果您的工作更加面向研究,您可能需要阅读度量空间索引和近似k近邻搜索。
答案 1 :(得分:0)
我可能有点在这里,但你最好的选择可能是使用Postgresql里面的Gist / Gin索引