我们希望在单个8核Xeon机器上使用32 GB RAM索引1亿个平均大小为10 KB的文档。文件总大小约为1 TB。该集被冻结,没有更新。因此,可以针对只读使用来优化索引。大多数查询都很简单,像BM25这样的简单算法就足够了。
有人在Lucene之前做过这个吗?如果是,请告诉性能指标,例如每秒查询数,索引大小以及查询的特定平均响应时间。
我知道这取决于硬件性能,最好的方法是自己测试它,但在我们测试它之前,我想拥有其他人的经验。特别是,我们希望响应时间低于1秒。是否可以使用一台机器和1亿份文件? Sphinx是一个更快的解决方案吗?我应该提一下,我们不希望像Solr这样的分布式解决方案。而且,我知道Lucene's nightly benchmarks但它的设置非常小(4百万doc)并且没有报告平均查询时间。
事先谢谢。
答案 0 :(得分:4)
一如既往,它很大程度上取决于您对索引运行的查询。对于简单的关键字搜索,如果您从SSD运行索引,则1TByte / 100M文档完全优化的索引应该在32GB计算机上具有很强的响应性。使用旋转驱动器,不是那么多。
我们目前的大型索引是3.6TByte / 1.2B文件,80GB内存的响应时间低于1秒。它在Solr上运行,但在纯Lucene下性能会相同或更好。在https://sbdevel.wordpress.com/2014/06/17/terabyte-index-search-and-faceting-with-solr/进行了一次写作,其中包含一些性能图表。