Solr的性能在solr4版本之后的得到了极大的提升,在使用过程中,尽量使用新的版本,在实践中总结的一些性能优化参考,不同的业务场景需求,优化的方式会不一样。
在设计field schema的时,需要关注indexed、stored、omitNorms这几个属性的值;indexed对索引的内存使用,segment的合并,索引的optimize,以及索引的大小都有影响,所以对于不需要索引的字段,indexed设置成false;stored属性更多的影响存储的IO,可以考虑综合压缩对IO和cpu之间消耗的平衡,也可以把非索引的字段放到其他数据库中存储。
omitNorms在建立索引时会存储相关的影响boost打分的长度因子,因此对于不需要打分排序考虑的,omitNorm设置成true。
索引merge的频率(mergeFactor),其实就是optimize,对索引和搜索都有影响,merge是把所有的段合并成一个,将需要删除或是被替换的索引标记为deleted,然后再创建新的文档替换掉需要被替换的,有点像整理磁盘碎片的动作,会创建一个全新的索引结构便于提高搜索的效率,mergeFactor设大索引效率高,搜索效率低,同时mergeFactor越大消耗的内存越多,所以需要综合考虑不同的场景的需求以及硬件设备环境来设定mergeFactor参数。
MaxMergeDocs