2010-11-17 146 views
4

我有一个数据集,我需要找到K个最近的邻居或距离d内的所有邻居。数据集具有已定义的自定义距离,但它不是欧几里德距离。是否有基于磁盘的最近邻数据结构?

我以前用过metric trees,主要是覆盖树。但是,在这种情况下,我的数据集将大于可用内存。那么,是否有任何数据结构可以用于磁盘存储数据集中的最近邻居?这个操作的一个好的数据库索引也是有用的。

回答

1

您可以使用封面树来保存指向您的磁盘数据集的指针。指针将包含相对记录编号以及来自记录的任何其他信息,以便您遍历树。

+0

这样做效率不高,因为记录中的附加信息是整个记录(考虑文档或图像之间的距离)。据我所知,我希望尽量减少磁盘访问,并且封面树并没有为此专门进行优化。 – 2010-11-17 18:34:32

+0

我想我不明白。不能将文档或图像存储在磁盘上,并且索引会保存计算出的距离和指向文档或图像的磁盘位置的指针? – 2010-11-17 19:28:51

+0

我希望能够最大限度地减少磁盘访问次数,因为每次距离计算都需要至少从数据库中加载一个完整文档。在实践中,具有提示性能的封面树满足我的需求。 – 2010-11-21 21:13:28

相关问题