Заявка
Я работаю над простым инструментом поиска по словарю, основной целью которого является поиск в списке слов из примерно 180 000 слов.
Начнем с того, что список слов представлял собой простой текстовый документ, каждое слово в одной строке. После загрузки список слов был преобразован в простой массив для поиска.
Цель
Моя цель, однако, состоит в том, чтобы распространять приложение в виде одного переносимого исполняемого файла, и поэтому я должен каким-то образом упаковать список слов в приложении.
Мои попытки
После первой попытки я просто автоматически сгенерировал определение массива и включил его в проект (поэтому вместо загрузки файла и создания массива у меня есть буквальный массив в проекте), который выглядит примерно так:
// 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 слов) словарь в переносимое / автономное приложение, возможно, используя какую-то технику сжатия, чтобы уменьшить размер файла, но в конечном итоге сохранить разумное время загрузки, которое «больше предпочтительнее простого предопределенного литерального массива?