我们正在维护一个包含大约20毫米文档的Lucene索引。搜索查询的性质使得索引和查询可以在不同索引之间轻松分割。
要实现我们需要在内存中保留许多(可能是数千个)IndexWriters或IndexReaders / Searchers来处理这些indiceies中的每一个的索引和查询(查询不跨越多个索引)。
我需要知道这将导致的内存压力,以及任何人都可以建议的潜在解决方案。
答案 0 :(得分:3)
您可能需要查看Solr,它支持创建和管理多个索引(称为核心)。如果有必要,它还将处理多个节点上的所有分发工作。
话虽如此,每个索引的内存开销非常低(按设计)。我认为它类似于每个文档一个字节,然后是唯一术语的数量除以256。
答案 1 :(得分:0)
我想知道您多久更新一次索引,是否有实时要求? 我正在使用java lucene项目,然后你可以查看这个开源项目,Linked-In产生了一些内部工作。 http://sna-projects.com/zoie/
只要搜索内存压力取决于您是否按索引字段的值对结果进行排序。在这种情况下,作为内部lucene工具的字段缓存在某些情况下会产生内存压力。
我希望这会有所帮助。