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