BK - 树搜索全部

时间:2017-08-26 21:39:41

标签: algorithm search data-structures fuzzy-search bk-tree

BK Trees (Burkhard-Keller Trees)与模糊字符串搜索相关联(例如拼写检查,单词推荐)。并且所有BK树搜索算法与explained here相同。目的是返回,例如"seek" and "peek" if I search for "aeek"

现在,我的问题是,我正在尝试使用此模糊字符串搜索算法从给定字典中搜索所有类似项目。例如,给定一个单词“seek”,我想在字典中找到所有类似的单词,如“peek”,“geek”,“seat”等。但是我发现BK Trees searching algorithm that everyone uses不是为此设计的。

看一下我的sample test result here。我发现the dictionary will be different if the feeding words order is different, thus the search result can be different as well

我想要的是,使用我上面的sample test,给出四本Python书籍中的任何一本,SearchAll函数将始终返回四本Python书籍,尽管字典是按顺序构建的,或者是命令搜索完成。

但是,我尝试了很多方法,但都失败了(例如this is one of them)。现在我举手并寻求帮助。伪代码或通用算法描述会做。谢谢。

1 个答案:

答案 0 :(得分:1)

bktree.go的77行和106行有整数溢出:

  

k:= d - r

由于dr的类型为uint8k的类型也为uint8,因此在d < r时,{ {1}}最终大于k,并且以下周期不会执行。

你可以这样解决:

d + r