我正在使用vim插件进行自动完成。我将当前文本和以前编辑过的文本用于自动建议。
我的第一个解决方案是使用一种单一模式算法-Rabin–Karp算法,Knuth–Morris–Pratt算法,Boyer–Moore字符串搜索算法或有限自动机。然后,我只计算算法产生的每个单词的出现次数。最后,我根据出现的次数对结果进行排序,并将其作为自动完成的最终结果。
我的下一个想法是使用后缀树。但是,我担心一个问题。使用“不断”变化的当前文本会不会花费太长时间?
还有其他方法如何对单模式算法的结果进行排序以获得更好的自动完成功能?我还有其他算法可以用来获得更好的结果吗?