需要帮助重新构建和优化大型solr索引

时间:2014-02-28 20:50:55

标签: java solr lucene indexing

我有一个有效的Solr索引,但我需要帮助重新构建它,使其更小,更快,资源更少。

当前:

  • 一个索引保存了过去10年的数据。
  • 每日,将5k个新文本文件编入索引
  • 索引大小约为。每年40 GB,所以400 GB,10年合计。

要求:

  • 能够每晚用新文件更新索引
  • 能够从src文件重建索引 - 希望能加快速度。
  • 能够保留当前大量的构面字段(大约30个)。
  • 能够保持“突出显示” - 因此可以显示提取的文档中的文本。

问题:

  1. 从头开始重建索引时,有什么权衡(构建时间,内存要求,处理要求)以及何时发出“提交”和“优化”?:

    • 构建一个单一的10年索引(在构建期间难以分发)
    • 每年构建1个索引 - 然后合并它们
    • 每月,每周或每天构建1个索引,然后将它们合并在一起
  2. 如何合并(有什么权衡):

    • 使用cmd line lucene index merge工具,solr的web实例,还是JAVA API?
    • 合并时需要多少临时磁盘空间(除了源索引+最终索引大小)
    • 合并是否有内存要求?
    • 一次合并两个或同时合并是否更好?
    • 有没有办法让lucene cmd行索引合并工具输出进度?
  3. 如何运行索引:

    • 一个大索引
    • Sharded index - multi core - 每年都有自己的核心。
  4. 如何应用每日更新:

    • 适用于主要指数
    • 将新的每日核心创建为新分片,而不是合并。
    • 创建新的每日核心并将每日核心与完整索引合并
  5. 内存,磁盘和CPU的考虑因素是什么?您认为单个机器的要求是什么(对于开发/原型环境,不适用于互联网规模生产)?

  6. 我需要继续强调。有没有办法既不存储文本字段,或收缩? doc有些减少最终索引的大小而不删除在搜索结果中突出显示的能力?

1 个答案:

答案 0 :(得分:1)

  

如何合并(什么是权衡)

为什么不考虑'Sharding'?在这种情况下,您不必合并它们。您可以保持每2年或您决定的任何时间段对数据进行分片。查询也会更快,因为它将使用分布式搜索功能。

看看:

https://wiki.apache.org/solr/DistributedSearch

http://wiki.apache.org/solr/SolrCloud