我刚到那个地区,我最想知道的是什么是最先进的,在哪里我可以读到有关它的资料.
让我们假设我有一个键/值存储,并且我以某种方式定义了一些距离(键1,键2)(不确定它是否必须是一个度量,即三角形不等式是否必须始终保持).
我想要的主要是一个搜索(key)函数,它可以返回到搜索键一定距离的所有项目.也许距离限制是可配置的.也许这只是一个懒惰的迭代器.可能还存在计数限制,并且一个项目(键、值)在返回的集合中的概率为P,其中P=1/距离(键、搜索键)左右(即,完美匹配肯定在集合中,并且至少以高概率接近匹配).
一个示例应用是MusicBrainz中的 fingerprint 匹配.他们使用AcoustId fingerprint ,并定义了this compare function.他们使用PostgreSQL gin Index,我猜(尽管我还没有完全理解/阅读acoustid-server代码)GIN Partial Match 算法rithm,但我还没有完全理解这是否是我所要求的,以及它是如何工作的.
在文本方面,到目前为止,我发现使用了大约phonetic algorithm个单词来根据它们的发音来简化单词.here就是一个例子.这主要是为了将搜索空间分解为更小的空间.然而,这有几个限制,例如,在较小的空间中,它必须仍然是完美匹配的.
但不管怎样,我也在寻找一种更通用的解决方案,如果存在的话.