如何优化搜索算法?

时间:2016-07-31 17:33:43

标签: java algorithm search spelling

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

例如,合并"自动更正"是多么容易?你在搜索结果的术语中,拼写中的结果相似但不准确?或者与前3个字符匹配而不是整个单词的结果,或者包含单词但不一定由整个单词组成的结果?有没有这个或类的API,还是有一个算法可以帮助我在这里?

1 个答案:

答案 0 :(得分:0)

简而言之,对于SIMILAR字符串,您可以使用"编辑距离"算法,找到相似性(实际上它找到了将一个字符串转换为另一个字符串的移动次数,但这是一种相似性),对于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