上篇文章介绍了全文检索系统的索引文件格式,那么这些索引是如何生成的呢?这篇文章我们介绍一下搜索系统索引的生成过程。
索引服务器大部分时间都在做一项工作:合并索引。索引是一段来组织的,每个段都包含了若干条索引记录。索引服务器不停的合并这些段,把小段合并成大段,把大段合并成更大的段。最终合并成一个段,然后做索引切换,把生成好的索引数据切换给搜索服务器使用。
整个合并的原理如下:
合并的条件:
1.合并因子,索引服务器启动时,配置了一个合并因子,例如100。在程序刚开始运行时,假设没有任何数据,这时候一个文档就是一个段,当有100个文档时,达到了合并因子,把这100个合并成一个段1。当段1的数量达到100时,需要再做一次合并,以此类推。
2.时间,我们配置一个索引切换时间,例如半个小时,到达这个时间时,必须把所有索引段合并成一个段切换到索引。这个时间的设置必须要把握好,太短,则会造成索引频繁切换,数据排队,索引服务器效率下降。太长则会造成数据更新不及时,单次切换压力过大。
当索引切换到搜索后,搜索系统就可以提供搜索服务了。