C# 快速查找字典文本文件中是否存在单词

C# 快速查找字典文本文件中是否存在单词,c#,silverlight,performance,dictionary,lookup,C#,Silverlight,Performance,Dictionary,Lookup,我有一个大的文本文件(~10mb),其中或多或少有一种特定语言的每一本词典,每个单词都被新行删除 我想做一个非常快速的查找,看看文件中是否存在一个单词- 在不循环每条线路的情况下,最快的方法是什么 它被分类了,我可以做我想要的所有预处理 我考虑过做一些二进制搜索,但我不知道怎么做,因为我的所有行都不是固定的字节数(因此我不知道将流跳转到哪里)。令人惊讶的是,我找不到一个工具来为我做固定宽度的事情 有什么建议吗? 谢谢 我建议从字典中建立一个。这可以让您快速查找某个单词是否在其中。如果您不介意使用

我有一个大的文本文件(~10mb),其中或多或少有一种特定语言的每一本词典,每个单词都被新行删除

我想做一个非常快速的查找,看看文件中是否存在一个单词- 在不循环每条线路的情况下,最快的方法是什么

它被分类了,我可以做我想要的所有预处理

我考虑过做一些二进制搜索,但我不知道怎么做,因为我的所有行都不是固定的字节数(因此我不知道将流跳转到哪里)。令人惊讶的是,我找不到一个工具来为我做固定宽度的事情

有什么建议吗?
谢谢

我建议从字典中建立一个。这可以让您快速查找某个单词是否在其中。

如果您不介意使用更多存储空间,那么trie是一个不错的选择:

我想您不能将文件加载到内存中并保存在那里?10MB并不是那么大。如果您可以将文件加载到内存中,那么generic
Dictionary
类将起作用。或者,如果您使用的是Silverlight 4,您可以使用
HashSet
。当然,这些都是可能的,但是如果我不想占用将其全部加载到内存所需的时间,该怎么办?还有,这是一个移动设备。这是一种可能性,但是如果我不想花太多的时间把它全部加载到内存中怎么办?还有,这是一个移动设备。@Steve:你说过你可以做你想做的所有预处理。在过去的30分钟里,你的要求有没有改变?@Anon-没有,没有。我很乐意对其进行预处理,但问题将归结为:1。如果我进行trie,我必须将数据结构加载并创建到内存中——这需要时间,不是吗?2.与#1类似-每次查找#1是否比在文件中跳转更快?(老实说,我不知道答案,因此在寻找指导)@Steve:为什么不把trie存储在磁盘上?或者将它保存在内存中,而不是每次都重建它?是的。如果我做了一个trie,我会将它序列化并反序列化到磁盘(尽管我对trie的了解还不够)。但将其保留在内存中并不切实可行——我需要应用程序快速启动(因此不会在加载时间内引发trie),偶尔,一旦用户采取行动,我会想进行单词查找。我不知道足够的尝试,真正知道它会有多快加载它的所有=/