分享、学习、提高
2010/02/06 23:33
文章作者:Enjoy 转载请注明原文链接。
张宴在博客上公开了《基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计》,第一时间下载下来阅读。

虽然其基本原理在Sphinx的文档中也基本上写清楚了,我也有在生产环境下使用,并写了一篇sphinx实现主索引+增量索引的日志。但看了下文档后,还是有不少收获。

第1,把增量索引存到共享内存中(/dev/shm),以提高索引性能,减少系统负荷。
第2,主索引和增量索引没有通过文档介绍的增中sph_counter表来记录主索引到达的ID,而是使用时间戳来判定,很适用于论坛的贴子索引。
第3,我傻傻的在增量索引后,又进行了合并索引的操作。其实合并索引的操作可以省略,因为,1、合并索引虽然快重建索引快不少,但需要分别读入主、增量两个索引文件,合并后再写入磁盘,也是个不小的开稍。2、Query ( $query, $index )的这个$index可以是多个索引名,所以只需要Query($query,"main,delta"),就可以让程序搜索主索引+增量索引了。这个我是在翻Sphinx文档时突然发现并想到的,就这个小问题还去张宴的博客上提问呢,哎,还好自己想到了:)另外,看到Coreseek的论坛说,sphinx0.98版本的合并索引有点问题,合并的内容有时会索引不到。那就更加不用合并索引了。

根据这些收获,对自己在生产环境下使用的配置进行了优化。经过优化后,原来由于要合并设置了半小时才跑一次的增量索引改为5分钟跑一次,由于只需要增量索引,基本不用担心会影响系统负荷了。

另外,如果修改了配置文件,执行增量索引,有带--rotate后,会出现delta.new.*(如*.new.spa,*.new.spk)的文件,无法更新成功,不带rotate的就可以。这个时候,我发现需要重启下searchd(先bin/searchd --stop,再bin/searchd 开启),再运行就没有这个问题了。
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]