N很小(约为400),字符串很长,长度固定。数据库不会改变,因此我们可以预先计算索引。查询变化很大,缓存和/或预计算不是一个选项。每秒有大量查询。我们始终需要k个结果,即使k-1个结果匹配0(按汉明距离排序并取前k个,因此局部敏感哈希等方法行不通)。kd树和类似的空间划分可能比线性搜索表现更差(字符串可能非常长)。BK树目前是最佳选择,但它仍然比必要的慢和复杂。
感觉有一种算法,可以构建一个索引,在很少的步骤中丢弃大多数条目,留下k <= t << N个条目来计算实际的汉明距离。
人们建议基于Levenstein距离的模糊字符串匹配 - 谢谢,但问题要简单得多。基于广义距离度量的方法(如BK树)很好,但也许有些东西利用了上述事实(小型DB /长固定大小字符串,简单的汉明距离)
链接,关键词,论文,想法?=)