应用程序
我正在开发一个简单的字典搜索工具,主要目的是搜索一个大约18万个单词的单词列表。
首先,单词列表是一个纯文本文档,每个单词都放在一行上.加载后,word列表被处理成一个简单的数组进行搜索.
The Objective
然而,我的目标是将应用程序作为单个可移植的可执行文件分发,因此我必须以某种方式将word列表打包在应用程序中。
我的尝试
第一次尝试时,我只需自动生成一个数组定义,并将其包含在项目中(因此,我没有加载文件和创建数组,而是在项目中有一个文字数组),它看起来有点像这样:
// Auto-generated word-list
public string[] WordList = new string[178691];
WordList[0] = "AA";
WordList[1] = "AAH";
// ...
WordList[115383] = "PHOTONEGATIVE";
WordList[115384] = "PHOTONIC";
WordList[115385] = "PHOTONICS";
WordList[115386] = "PHOTONS";
WordList[115387] = "PHOTONUCLEAR";
WordList[115388] = "PHOTOOXIDATION";
WordList[115389] = "PHOTOOXIDATIONS";
WordList[115390] = "PHOTOOXIDATIVE";
WordList[115391] = "PHOTOOXIDIZE";
WordList[115392] = "PHOTOOXIDIZED";
WordList[115393] = "PHOTOOXIDIZES";
WordList[115394] = "PHOTOOXIDIZING";
WordList[115395] = "PHOTOPERIOD";
// etc...这实现了完全可移植的目标,并且整个项目的文件大小保持不变。
但是,以这种方式处理它确实改变了一件事,那就是增加构建和运行时,这可以被认为是一个小的、不可避免的问题,但理想情况下应该缩短。
问题
有没有办法将一个大型字典(~180,000字)组合成一个可移植/独立的应用程序,也许使用某种压缩技术来降低文件大小,但最终保持一个合理的加载时间,这比一个简单的、预先定义的、文字数组“更受欢迎”?
发布于 2009-10-03 21:48:48
您应该考虑将文件作为嵌入式资源添加到.NET程序集中。然后,可以在运行时从程序集中读取这些值。您还可以使用DeflateStream (参见这里)以某种方式将其压缩到程序集中。
https://stackoverflow.com/questions/1514918
复制相似问题