我有一个术语(单词)列表,大约500,000,它们被加载到一些数据结构中,如字典或Trie或许.
在我的程序中,我想打开每个文本文档并搜索这些术语的出现.当我找到一个我想停止并转换文本文件中的字符串(用转换后的字符串替换它),然后继续搜索.完成文件后,我将新的修改文件写入磁盘.
我的问题如下
>用于此目的的最佳数据结构是什么 – 树类型结构或.NET字典
>我如何搜索文本?我是否将其分解为单词并将每个块与我的列表或其他方法(如RegEx)或.NET方法(如Contains())进行比较?
我只是在寻找一些关于从哪里开始的建议,因为我认为当我处理非常大量的文本文件时速度将非常重要.
编辑:是的每个字符串的转换是相同的 – 基于算法 – 所以每个字符串看起来会有所不同. (例如,使用密码来制作单词是不可读的.无论如何,我只是在寻找某人指向正确的方向,我不熟悉那里的许多算法和数据结构.
最佳答案 从我上过的课程中,我记得我们介绍了几种不同的算法.以下是我记得对大文本文件非常有效的内容……
博耶 – 摩尔:
http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm
克努特莫里斯普拉特:
http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
这些只会帮助查找,然后您可以自己进行操作