2009-10-03 7 views
0

L'application
Je travaille sur un outil de recherche simple dictionnaire, dans le but principal de la recherche d'un mot-liste d'environ 180 000 mots. Pour commencer, la liste de mots était un document en texte brut, avec chaque mot sur une seule ligne. Lors du chargement, la liste de mots a été traitée dans un tableau simple pour la recherche.Y compris Grand dans Wordlist autonome Dictionnaire application

L'objectif
Mon objectif, cependant, est de distribuer l'application en un seul fichier exécutable portable et je dois donc emballer la liste de mots dans l'application d'une certaine manière.

Mes tentatives
Sur ma première tentative, je simplement généré automatiquement une définition de tableau, et l'ont incluse dans le projet (donc au lieu de charger le fichier et la création d'un tableau, j'ai un tableau littéral au sein du projet) , qui ressemble un peu à ceci:

// 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... 

cela permet d'atteindre l'objectif d'être complètement portable, et le fichier taille du projet dans son ensemble reste le même. Une chose qui change en l'approchant de cette manière, cependant, est une augmentation du temps de construction et d'exécution, ce qui pourrait être considéré comme un problème mineur et inévitable, mais devrait idéalement être raccourci.

La question
Est-il possible de combiner un grand (~ 180 000 mots) dictionnaire dans une application portable/autonome, en utilisant peut-être une sorte de technique de compression pour réduire le fichier de taille, mais finalement de garder à un temps de chargement raisonnable, qui est "plus favorisé" qu'un simple tableau littéral prédéfini?

Répondre

5

Vous devez envisager d'ajouter le fichier en tant que ressource incorporée à votre assembly .NET. Vous pouvez ensuite lire les valeurs à l'exécution à partir de l'assemblage. Vous pouvez également utiliser DeflateStream (voir here) pour le compresser d'une manière ou d'une autre.

+0

Excellent. Cette solution a diminué la taille du fichier, réduit le temps de construction et diminué le temps d'exécution. C'était exactement ce dont on avait besoin. Je vous remercie. – gpmcadam

Questions connexes