【问题标题】:How to set / configure the max size of a solr index file?如何设置/配置 solr 索引文件的最大大小?
【发布时间】:2012-10-31 21:33:25
【问题描述】:

如何配置 Solr 索引文件的最大大小?

【问题讨论】:

    标签: solr full-text-search search-engine lucene


    【解决方案1】:

    根据 Solr 用户邮件列表上的讨论 - Control Segment Size,不幸的是,没有任何方法可以控制 Solr 索引文件(也称为段)的最大大小。

    为了让答案包含实际的细节,这里是来自线程的细节:

    您要设置:maxMergeDocs。 “在合并段时,Lucene 将确保不会创建超过 maxMergeDocs 的段。”

    无法将单个文件限制为特定大小。

    单个段不会包含超过 maxMergeDocs 数量的 文件。但是段的大小可能仍然会有所不同,因为某些文档 可能比其他令牌具有更多的独特令牌。

    您最初看到的一定是段合并,这是正常的,并且 发生在索引过程中。我认为没有办法避免这种情况 除了拥有高得离谱的mergeFactor(这会影响搜索 表现)。

    【讨论】:

    • 那篇文章是 2009 年的。我希望从那时起事情可能会发生变化 :)
    • 对不起,从那以后没有任何变化。从那时起,Solr 用于管理段的算法得到了改进,因此也许您应该查看默认的默认 TieredMergePolicy。
    • 谢谢佩奇。你知道是否有办法告诉 Solr 将整个索引存储为一个文件,而不是分段?
    • @SaqibAli:您可以触发 forceMerge(1) 或弃用优化以合并所有细分,但更新仍会创建新细分。
    【解决方案2】:

    从 solr 6 开始,现在可以设置段的最大大小。 请注意,maxMergeDocs弃用

    默认的mergePolicyFactoryTieredMergePolicyFactory。它有一个属性MaxMergedSegmentMB 控制段大小。来自javadocs

    如果合并将产生一个大于 setMaxMergedSegmentMB(double),则策略会合并更少 段(如果该段有删除,则立即减少到 1 个)以保留 段大小低于预算。

    例如将最大段大小设置为 3000 MB:

    <mergePolicyFactory class="solr.TieredMergePolicyFactory">
        <int name="maxMergeAtOnce">10</int>
        <int name="segmentsPerTier">10</int>
        <int name="maxMergedSegmentMB">3000</int>
    </mergePolicyFactory>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      相关资源
      最近更新 更多