• Lucene中的合并因子mergeFactor


    mergeFactor
    是用来决定segment该如何被addDocument()方法进行合并的。
    当mergeFactor取比较小的值时,索引时所使用的内存较少
    而且搜素未优化的速度会比较快。因此,mergeFactor取值较大时(比如大于10),
    适合于批量的索引建立,而当搜索未优化索引的速度会更快,但是索引建立的速度会比较慢。
    当mergeFactor取较大的值时,建立索引的速度会比较快。因此,mergeFactor取值较大时(比如大于10)
    适合于这些批量的索引建立,而当mergeFactor取较小的值时,适合于间歇性的向索引加入文档。
    这个合并因子在Lucene的索引建立过程中起到很重要的作用:
    (1)、将mergeFactor的因子设为10, 那么每向索引添加10个Document时,就会有一个新的segment在磁盘上建立起来。
    (2)、当第10个这样的segment建立好后,它们会被合并成为一个具有100个Document的新segment。
    (3)、接下来,每个100个Document又会创建一个新的segment,当第999个文档被加入索引时,
    此时磁盘上应该已经有了9个segment,其中每个都有100个Document,而第901个到999个Document此时正在内存中,
    还未被写入磁盘中。
    (4)、倘若此时,再向索引中加入一个Document,那么,前面9个segment就会和这第10个
    新创建的segment进行合并,成为一个具有1000个Documentde segment。过程依次类推。


    //为了防止segment中文档数量会增长的快,所以用maxMergementDocs限制最大的存储在segment的文档数。
    //minMergementDocs又叫做maxBufferedDocs指的是每次将索引被刷到磁盘的时候,内存的数量

  • 相关阅读:
    【LeetCode】Hash
    【LeetCode】Heap
    【LeetCode】Stack
    【CodeVS】 纯OI题
    【LeetCode】String
    【LeetCode】Array
    WinForm窗体 常用属性
    C# ADO.NET 实体类中的属性扩展
    C# ADO.NET 三层架构
    C# ADO.NET 数据库的安全(sql 字符串注入攻击、使用占位符防止注入攻击)
  • 原文地址:https://www.cnblogs.com/1130136248wlxk/p/5036517.html
Copyright © 2020-2023  润新知