Penso che tu abbia incasinato alcune cose nella tua domanda. Lucene (non so nulla di Lucene, NET, ma suppongo sia lo stesso) è una libreria utilizzata per analizzare, dividere in token e archiviare documenti per poterli interrogare e recuperarli in seguito. Lucene ha un modello piuttosto vecchio ma efficace, usa alberi invertiti per trovare e recuperare documenti. Senza ulteriori dettagli, tutti i documenti sono suddivisi in token (termini) e per ogni termine viene mantenuta una struttura di dati, che memorizza tutti i documenti che contengono il termine specificato. Poiché una struttura di dati può essere utilizzata, una BTree, una tabella di hash e nelle ultime revisioni principali è persino possibile collegare le proprie strutture di dati.
Un BTree (vedere la pagina Wikipedia per ulteriori dettagli), è una specie di struttura di dati ad albero, che è appropriata per lavorare con grossi blocchi di dati e viene spesso usata per archiviare strutture ordinate ad albero su disco. In memoria altri alberi hanno prestazioni migliori.
Hash Murmur (vedi la pagina Wikipedia per ulteriori dettagli), è una famiglia di funzioni hash utilizzate nella tabella hash. L'implementazione della tabella hash non è importante, potrebbe essere un'implementazione concatenata standard o uno schema di indirizzamento hash aperto più avanzato. L'idea è che le tabelle hash consentono di ottenere velocemente una chiave, da un set di chiavi non ordinato, e possono rispondere ad attività come: questa chiave fa parte di questo set di chiavi? qual è il valore associato a questa chiave?
Ora torniamo al tuo problema principale. Hai una libreria (Lucene) e alle strutture di dati, entrambe le strutture di dati sono usate in Lucene. Ora vedi che non è possibile rispondere alla tua domanda in questi termini poiché non sono comparabili.
Tuttavia, per quanto riguarda il footprint e le prestazioni della parte della domanda. Prima di tutto devi sapere che tipo di operazioni devi implementare.
Hai solo bisogno di ottenere valore per la chiave o devi trovare tutti gli elementi in un intervallo? In altre parole, hai bisogno di ordine o no? Se lo fai, allora un albero può aiutare. In caso contrario, è possibile utilizzare una tabella hash, che è più veloce.
Hai molti dati che non si adattano alla memoria? Se sì, una soluzione basata su disco sarebbe di aiuto (come BTree). Se i tuoi dati si adattano alla memoria, usa la soluzione in memoria più veloce e usa il disco solo come memoria (con una struttura diversa, molto più semplice).