提交和优化操作
<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 使用可选属性的例子:
<commit waitFlush="false" waitSearcher="false"/><br /> <commit waitFlush="false" waitSearcher="false" expungeDeletes="true"/><br /> <optimize waitFlush="false" waitSearcher="false"/>