我认为您弄乱了您的问题。Lucene(我对Lucene,NET一无所知,但我想还是一样)是一个库,用于分析,拆分令牌和存储文档,以便以后可以查询和检索它们。Lucene有一个相当古老但有效的模型,它使用倒置树来查找和检索文档。在没有更多详细信息的情况下,所有文档都按标记(术语)进行拆分,并且为每个术语维护一个数据结构,该数据结构存储包含给定术语的所有文档。作为数据结构,可以使用BTree,哈希表,在最新的主要版本中,您甚至可以插入自己的数据结构。
BTree(有关更多详细信息,请参见Wikipedia页面)是一种树型数据结构,适用于处理大块数据,通常用于在磁盘上存储树状有序结构。对于内存中的其他树,性能更好。
Murmur哈希(有关更多详细信息,请参阅Wikipedia页面)是哈希表中使用的一系列哈希函数。哈希表的实现并不重要,它可以是标准链式实现,也可以是更高级的开放式哈希寻址方案。这个想法是,哈希表允许一个人从无序的一组键中快速获得一个键,并且可以回答诸如以下任务:该键是这组键的一部分吗?与此键关联的值是什么?
现在回到您的主要问题。您有一个库(Lucene),对于数据结构,这两个数据结构都在Lucene中使用。现在,您将无法用这些术语回答您的问题,因为它们是不可比较的。
但是,关于您的占地面积和性能,这是问题的一部分。首先,您必须知道需要执行哪种操作。
您是否只需要获取键的值,还是需要查找范围内的所有元素?换句话说,您是否需要订购?如果这样做,那么一棵树会有所帮助。如果不这样做,则可以使用更快的哈希表代替。
您是否有很多不适合内存的数据?如果可以,那么基于磁盘的解决方案会有所帮助(例如BTree)。如果您的数据适合内存,那么请使用最快的内存解决方案,而仅将磁盘用作存储(结构不同,简单得多)。