在solr中查找最短的索引时间

时间:2013-11-22 16:49:22

标签: java solr lucene indexing solrj

描述(供参考):

我想索引整个文件驱动器:~2TB

我正在获取文件列表(使用commons io库)。

获得文件列表后,我会浏览每个文件并使用Apache Tika从中提取可读数据

一旦我获得数据,我就使用solr索引它。

我正在使用solrj和java应用程序

我的问题是:我如何确定传递给Solr的集合大小。我尝试过以不同的尺寸传递不同的结果,即有时每个集合150个文档的性能优于100个文档,但有时它们不会。它们是一种可以调整的最佳方式/配置,因为这个过程必须重复进行。

并发症:

1)文件存储在网络驱动器上,检索文件名/文件也需要一些时间。

2)这个程序(java app)和solr本身都不能使用超过512MB的ram

2 个答案:

答案 0 :(得分:0)

我只列举其中一些可能影响索引速度的参数。通常需要尝试使用自己的硬件,RAM,数据处理复杂性等来找到最佳组合,即所有人都没有单一的银弹。

  1. 将索引编制期间的段数增加到一些大数。说,10k。这将确保段的合并不会像在默认的段数10中那样经常发生。在索引期间合并段有助于减慢索引。索引编制完成后,您必须合并段才能使搜索引擎执行。还要将段数减少到合理的位置,例如10。

  2. 在索引编制期间减少对容器的记录。这可以使用solr管理界面来完成。这使得索引编制过程更快。

  3. 要么降低自动提交的频率,要么将其关闭并自行控制提交。

  4. 删除批量索引的预热查询,不要自动复制任何缓存条目。

  5. 使用ConcurrentUpdateSolrServer,如果使用SolrCloud,则使用CloudSolrServer。

答案 1 :(得分:0)

在单个核心上注释掉自动提交和tlogs和索引。在你的solrj api中使用多线程(线程数=没有cpu * 2)来击中单个核心。

问候

Rajat