PDA

View Full Version : [C#] Indicizzazione file


Il Genio
30-07-2007, 12:02
Ciao a tutti!
Sto tentando di creare un indicizzatore di file in C#, ma sono incappato in un bel problema. Comincio spiegando il procedimento dall'inizio.
Inizialmente i file trovati nell'hard disk li inserivo in una lista generica di stringhe (inserivo il percorso completo), ma quando si ha a che fare con un numero molto elevato di file, si ha un consumo spropositato di memoria.
Ho così utilizzato una struttura ad albero (per nn avere un percorso ripetuto più volte).
Es.

C:\
Documents and Setting\
file_ds1.est
file_ds2.est
Programmi\
CartellaProgramma1\
fileCartellaProgramma1.est
file.est

(spero si veda l'identazione).

Quindi, nel momento in cui cerco un file, viene eseguita la ricerca, e il file trovato verrà visualizzato nell'elenco risultati: se l'utente clicca sopra il risultato, esso viene aperto.

Il problema comunque persiste, sebbene in misura minore: si ha ugualmente un elevato consumo di memoria.
Esiste qualche soluzione? E' possibile aggirare il problema?

Il Genio
30-07-2007, 23:00
Nessuno mi sa dare un aiutino?? Vi prego...

Einstein
31-07-2007, 09:03
L'occupazione di memoria che hai mi sembra abbastanza normale, visto che, alla fine, ciascun carattere occupa 1 byte. L'unico aiuto che ti può dare .NET è che può fare in modo che, a parità di contenuto, ti venga restituita la reference alla stessa stringa, visto che il tipo stringa è un reference type.
Puoi provare ad usare DotLucene, che è una libreria per costruire motori di ricerca:

http://incubator.apache.org/lucene.net/

Un esempio semplice di utilizzo lo trovi qui:

http://www.codeproject.com/aspnet/DotLuceneSearch.asp

Ciao