如何优化搜索算法?

how to optimize a search algorithm?

所以基本上我的意思是我如何制作一个搜索工具(比如搜索一系列字符串,可能在数组或数组列表中,等等)有用?不一定快,但有用。

例如,将 "autocorrect" 合并到您正在搜索的词产生的拼写结果与 相似 但不准确的地方有多容易?或者匹配前 3 个字符但不匹配整个单词的结果,或者可能 包含 单词但不一定包含整个单词的结果?是否有 API 或 class 或者是否有算法可以帮助我解决这个问题?

简而言之,对于 SIMILAR 字符串,您可以使用 "Edit Distance" 算法来找到相似性(实际上它会找到将一个字符串变成另一个字符串的移动次数,但这是一种相似性),对于 AUTOCOMPLETE 工具,您可以使用 "Trie" 数据结构,它作为一个字符树工作,并且当它读取当前单词的字符时,它会停在一个节点中,该节点向您显示它还可以去哪里得到现有的话。 要搜索包含单词(字符串)的内容,我想您可以使用 KMP 算法(或 Aho-Corasick,如果您希望在整个文本中搜索多个单词)。

https://en.wikipedia.org/wiki/Edit_distance

https://en.wikipedia.org/wiki/Trie

https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm

https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm