我需要在Postgres(*)(PL或PL / Python)中实现某种度量空间搜索。所以,我正在寻找好的资料(或论文),对这些思想背后的机制有一个非常明确和清晰的解释,以便我自己实现它。
我希望明确效率。
(*)对此的需求更好地描述here。
答案 0 :(得分:2)
特别是对于地理数据,请先查看PostGIS,看看是否需要实施任何内容。如果您这样做,请从Wikipedia entry on GiST。
中列出的论文开始查看您的链接,您的指标空间似乎是具有某种编辑距离的字符串作为指标。 Navarro, Baeza-Yates, Sutinen, and Tarhio, IEEE Data Engineering Bulletin, 2001给出了一些关于某些解决方案的旧的概述;关于Citeseer的相关文章也可能有用。 Locality Sensitive Hashing是一种可能有用的新技术,但很多论文都非常重视数学。
答案 1 :(得分:1)
BK-Trees可用于索引和搜索服从三角不等式的任何内容,包括度量空间。规范示例是在目标的给定编辑距离内搜索字符串。我写了一篇关于here的文章。
不幸的是,在Postgres中没有内置的支持。你可以使用GIST自己实现它,但显然这将是很多工作。在没有编写自己的索引而不将树存储在表中的情况下,我想不出任何方法来实现它,这显然不会非常有效。
答案 2 :(得分:1)
您可以尝试http://sisap.org列出许多现代指标索引,包括BK树。您可以在C中找到代码以尝试不同的替代方案。
答案 3 :(得分:0)
一些涉及空间搜索的技术可能对您有所帮助,包括爬坡,神经网络训练,遗传算法和粒子群。
您还需要在指标空间中定义距离指标。你有没有这样做过?(出于好奇,有什么,如果你这样做的话)