合并因子(mergeFactor)

mergeFactor 是 lucene 用于控制索引片段的数量,当数据大于 mergeFactor 的值时,这些索引将被合并成一个大的片段。当提交索引数据时,它将被加到最新打开的片段中。当一个新的索引片段被创建时,就会去检查这个合并因子。这个合并因子的大小对索引和搜索的速度有着影响,如果这个索引因子比较小,也就是索引片段比较少,这样会相对比较频繁促发索引合并,带来的好处时索引文件比较少,搜索时需要扫描的索引文件也就比较少,搜索速度就会相对提高。如果这个因子比较大,这样索引合并的次数次数机会减少,而索引片段会增多,这样搜索时需要访问的文件数就增多了,这样搜索速度就会相对慢点。所以该因子的设定需要一个权衡,同时保证搜索和索引都相对快速。在示例的 solrconfig.xml 中,该因子默认值为 10,就是出于一个合理的出发点去考虑的。
<mergeFactor>10</mergeFactor>

提交和优化操作

<commit> 操作会将上一次 commit 之后的文档写到磁盘的一个或多个 segment 文件里。在一个提交之前,最近索引的内容是搜不到的。commit 操作打开了一个新的 searcher,并且促发所有配置的监听。
<optimize> 操作要求 Solr 合并内部的数据结构,这样可以提高搜索性能。一个大的索引库,索引优化会持续一段时间,优化过程,会合并一些小的 segment 文件成一个大的文件,这样减少IO,搜索性能会有所提升。如果使用 Solr 的复制机制来实现多个系统的分布式搜索,需要注意的是,索引优化之后,需要分发一个完整的索引库。
 <commit> 和<optimize> 元素接受以下可选属性:

可选属性

描述

maxSegments 默认是 1。指定将现有索引碎片合并成多少个segment
waitFlush 默认是 true,在将索引写到硬盘过程,线程阻塞。
waitSearcher 默认是 true。线程阻塞,直到一个新的searcher 打开并注册成住 searcher,这样最近修改的数据可以被搜索到。
expungeDeletes Default is false. Merges segments and removes deleted documents.默认是 false。合并 segments 并且移除删除的索引。

这里是一个 commit 和 optimize 使用可选属性的例子:

&lt;commit waitFlush=&quot;false&quot; waitSearcher=&quot;false&quot;/&gt;<br />
&lt;commit waitFlush=&quot;false&quot; waitSearcher=&quot;false&quot; expungeDeletes=&quot;true&quot;/&gt;<br />
&lt;optimize waitFlush=&quot;false&quot; waitSearcher=&quot;false&quot;/&gt;

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress