Solr调优
Schema设计的思考
索引字段的数量(Indexed Fields)
索引字段会增加如下开销:
<!--[if !supportLists]-->1. <!--[endif]-->建立索引时的内存使用率
<!--[if !supportLists]-->2. <!--[endif]-->Segment合并时间
<!--[if !supportLists]-->3. <!--[endif]-->索引优化时间
<!--[if !supportLists]-->4. <!--[endif]-->索引大小
在这些字段上面加上omitNorms=”true”可减轻这些症状。
存储字段(Stored Fields)
获取查询结果的存取字段是个明显的开销。每个文档所存储的字节数决定了这个开销的大小。文档存储的字节数越大,文档就会更加稀疏的分部在磁盘里,导致更多的IO读写。尤其是那些大的存储字段。
需要考虑把大的存储字段,存储在Solr之外。如果你非的存储它,就考虑把它做成压缩字段。但这会增加CPU的消耗,而减少IO的负担。
如果你不是每次都要用到所有字段,那就考虑把有些字段设成lazy字段,特别是使用压缩字段的时候。
Solr配置文件的思考
mergeFactor
mergeFactor参数粗略的决定了segment的数量。
mergeFactor告诉Lucene在合并到一个单一的segment之前,多少个同样大小的segment可以build。
mergeFactor的选择
大的mergeFactor:
优点:提高索引建立的速度
缺点:merge频率下降,结果是index文件增多,searching变慢
小的mergeFactor:
优点:index文件少,提高searching速度
缺点:merge频率增加,建立索引较慢
HashDocSet Max Size参数的考虑
hashDocSet参数用于优化filter。较小的set,内存效率更高,遍历更快,交叉更快。
此参数和实际文档数量有关系:
<!--[if !supportLists]-->1. <!--[endif]-->计算0.005总的文档数量
<!--[if !supportLists]-->2. <!--[endif]-->上下的尝试来获取最佳的查询时间
<!--[if !supportLists]-->3. <!--[endif]-->当高的值和低的值,导致系统的性能变化不大时,选择较高的值。
Cache
Cache命中率
利用Solr的Admin检测cache的统计。提高cache的大小是个好方法。注意filterCache,facetting要用到filterCache。
排序字段的Explicit Warming
如果你有很多的给予排序的field,添加显式warming 查询到newSearcher和firstSearcher的事件监听器。在用户查询之前,可以填充FieldCache。
出处:http://blog.163.com/kivvf@126/blog/static/102516320084142011892/
学习
---------------------------------------------------------------------
solr学习资料:
“用 Lucene 加速 Web 搜索应用程序的开发”(Deng Peng Zhou,developerWorks,2006 年 8 月):了解关于 Lucene 搜索库的更多信息,该库用作 Solr 的基础库。
“Parsing, indexing, and searching XML with Digester and Lucene”(Otis Gospodneti,developerWorks,2003 年 6 月):Lucene 初探。
Solr 主页:学习教程、浏览 Javadocs 并随时关注 Solr 社区。
Solr Wiki:查看 Wiki 获取关于 Solr 运作的众多文档。
Solr 分析:了解关于 Solr 的分析器、断词工具和标记筛选器工作原理的更多信息。
Lucene QueryParser Syntax:了解关于 Solr 和 Lucene 的查询解析器语法的更多信息。
The Porter Stemming Algorithm:了解关于 Solr 使用的词干提取算法的更多信息。
Public Websites using Solr:使用 Solr 功能的 Web 站点的清单。
Lucene Java 主页:探索 Solr 的起源。
Lucene In Action (Otis Gospodneti and Erik Hatcher;Manning,2004 年):对 Lucene 有兴趣的人的必读之作。
developerWorks Java 技术专区:关于 Java 编程各个方面的数百篇文章。
Schema设计的思考
索引字段的数量(Indexed Fields)
索引字段会增加如下开销:
<!--[if !supportLists]-->1. <!--[endif]-->建立索引时的内存使用率
<!--[if !supportLists]-->2. <!--[endif]-->Segment合并时间
<!--[if !supportLists]-->3. <!--[endif]-->索引优化时间
<!--[if !supportLists]-->4. <!--[endif]-->索引大小
在这些字段上面加上omitNorms=”true”可减轻这些症状。
存储字段(Stored Fields)
获取查询结果的存取字段是个明显的开销。每个文档所存储的字节数决定了这个开销的大小。文档存储的字节数越大,文档就会更加稀疏的分部在磁盘里,导致更多的IO读写。尤其是那些大的存储字段。
需要考虑把大的存储字段,存储在Solr之外。如果你非的存储它,就考虑把它做成压缩字段。但这会增加CPU的消耗,而减少IO的负担。
如果你不是每次都要用到所有字段,那就考虑把有些字段设成lazy字段,特别是使用压缩字段的时候。
Solr配置文件的思考
mergeFactor
mergeFactor参数粗略的决定了segment的数量。
mergeFactor告诉Lucene在合并到一个单一的segment之前,多少个同样大小的segment可以build。
mergeFactor的选择
大的mergeFactor:
优点:提高索引建立的速度
缺点:merge频率下降,结果是index文件增多,searching变慢
小的mergeFactor:
优点:index文件少,提高searching速度
缺点:merge频率增加,建立索引较慢
HashDocSet Max Size参数的考虑
hashDocSet参数用于优化filter。较小的set,内存效率更高,遍历更快,交叉更快。
此参数和实际文档数量有关系:
<!--[if !supportLists]-->1. <!--[endif]-->计算0.005总的文档数量
<!--[if !supportLists]-->2. <!--[endif]-->上下的尝试来获取最佳的查询时间
<!--[if !supportLists]-->3. <!--[endif]-->当高的值和低的值,导致系统的性能变化不大时,选择较高的值。
Cache
Cache命中率
利用Solr的Admin检测cache的统计。提高cache的大小是个好方法。注意filterCache,facetting要用到filterCache。
排序字段的Explicit Warming
如果你有很多的给予排序的field,添加显式warming 查询到newSearcher和firstSearcher的事件监听器。在用户查询之前,可以填充FieldCache。
出处:http://blog.163.com/kivvf@126/blog/static/102516320084142011892/
学习
---------------------------------------------------------------------
solr学习资料:
“用 Lucene 加速 Web 搜索应用程序的开发”(Deng Peng Zhou,developerWorks,2006 年 8 月):了解关于 Lucene 搜索库的更多信息,该库用作 Solr 的基础库。
“Parsing, indexing, and searching XML with Digester and Lucene”(Otis Gospodneti,developerWorks,2003 年 6 月):Lucene 初探。
Solr 主页:学习教程、浏览 Javadocs 并随时关注 Solr 社区。
Solr Wiki:查看 Wiki 获取关于 Solr 运作的众多文档。
Solr 分析:了解关于 Solr 的分析器、断词工具和标记筛选器工作原理的更多信息。
Lucene QueryParser Syntax:了解关于 Solr 和 Lucene 的查询解析器语法的更多信息。
The Porter Stemming Algorithm:了解关于 Solr 使用的词干提取算法的更多信息。
Public Websites using Solr:使用 Solr 功能的 Web 站点的清单。
Lucene Java 主页:探索 Solr 的起源。
Lucene In Action (Otis Gospodneti and Erik Hatcher;Manning,2004 年):对 Lucene 有兴趣的人的必读之作。
developerWorks Java 技术专区:关于 Java 编程各个方面的数百篇文章。