快速文本编辑器找到

时间:2009-02-10 09:19:50

标签: algorithm string search

有谁知道文本编辑/程序员编辑如何能够对非常大的文本文件进行快速搜索。

他们是在加载时,在查找开始时还是其他一些聪明的技术?

我迫切需要更快地实现我所拥有的,从文本的顶部到底部非常慢的步行。

非常感谢任何想法。

这是针对C#实现的,但是我感兴趣的技术不仅仅是实际的代码。

4 个答案:

答案 0 :(得分:6)

Boyer-Moore搜索算法开始。它需要一些预处理(这很快)并且搜索得很好 - 特别是在搜索长子串时。

答案 1 :(得分:1)

如果大多数人只是使用基本的,天真的搜索技术(在第一个字符上扫描一个匹配,然后测试命中是否突破),我不会感到惊讶。

答案 2 :(得分:1)

的grep

虽然本身不​​是文本编辑器,但经常被许多文本编辑器调用。我很好奇你是否尝试过grep的源代码?即使在搜索大文件时,它总是看起来非常快。

答案 3 :(得分:0)

我所知道的一种尚未提及的方法是Knuth-Morris-Pratt-Search(KMP),但它对语言文本来说并不是很好(由于算法的前缀属性),但对于东西像DNA匹配它非常好。

另一个是哈希搜索(我不知道是否有一个官方名称)。首先,您计算模式的哈希值,然后创建一个滑动窗口(具有模式的大小)并将其移动到文本上并查看哈希值是否匹配。这里的想法是以一种你没有计算完整窗口的哈希值的方式选择哈希,但是你只需要使用下一个字符更新你的哈希值(并且旧的字符串从哈希计算中删除)。当你有多个要搜索的字符串时,这个算法表现得非常好(因为你只是预先计算你的字符串的哈希值)。