如何实现sphinx的增量索引功能示例?
- 内容介绍
- 相关推荐
本文共计889个文字,预计阅读时间需要4分钟。
注意:Sphinx的增量索引实际上是通过两个索引来实现的(主索引每天凌晨更新,增量索引每5分钟生成一次)。网上有说法可以通过索引merge合并成一个索引,但我尝试过,并没有真正实现合并。+sp
注:sphinx的增量索引其实是通过两个索引来实现的(主索引每天凌晨更新,增量索引每5分钟生成一次),网上有说可以通过索引merge合并成一个索引,但我试了试没有真的合并进去
sphinx 增量索引的设置 数据库中的已有数据很大,又不断有新数据加入到数据库中,也希望能够检索到。全部重新建立索引很消耗资源,因为我们需要更新的数据相比较而言很少。 例如。原来的数据有几百万条,而新增的只是几千条。这样就可以使用“主索引+增量索引”的模式来实现近乎实时更新的功能。
这 个模式实现的基本原理是设置两个数据源和两个索引,为那些基本不更新的数据建立主索引,而对于那些新 增的数据建立增量索引。主索引的更新频率可以设置的长一些(例如设置在每天的午夜进行),而增量索引的更新频率,我们可以将时间设置的很短(几分钟左 右),这样在用户搜索的时候,我们可以同时查询这两个索引的数据。
使用“主索引+增量索引”方法有个简单的实现,在数据库中增加一个计数表,记录每次重新构建主索引时,被索引表的最后一个数据id,这样在增量索引时只需要索引这个id以后的数据即可,每次重新构建主索引时都更新这个表。
测试条件:以默认的sphinx.conf配置为例,数据库表的数据也以 example.sql为例。
本文共计889个文字,预计阅读时间需要4分钟。
注意:Sphinx的增量索引实际上是通过两个索引来实现的(主索引每天凌晨更新,增量索引每5分钟生成一次)。网上有说法可以通过索引merge合并成一个索引,但我尝试过,并没有真正实现合并。+sp
注:sphinx的增量索引其实是通过两个索引来实现的(主索引每天凌晨更新,增量索引每5分钟生成一次),网上有说可以通过索引merge合并成一个索引,但我试了试没有真的合并进去
sphinx 增量索引的设置 数据库中的已有数据很大,又不断有新数据加入到数据库中,也希望能够检索到。全部重新建立索引很消耗资源,因为我们需要更新的数据相比较而言很少。 例如。原来的数据有几百万条,而新增的只是几千条。这样就可以使用“主索引+增量索引”的模式来实现近乎实时更新的功能。
这 个模式实现的基本原理是设置两个数据源和两个索引,为那些基本不更新的数据建立主索引,而对于那些新 增的数据建立增量索引。主索引的更新频率可以设置的长一些(例如设置在每天的午夜进行),而增量索引的更新频率,我们可以将时间设置的很短(几分钟左 右),这样在用户搜索的时候,我们可以同时查询这两个索引的数据。
使用“主索引+增量索引”方法有个简单的实现,在数据库中增加一个计数表,记录每次重新构建主索引时,被索引表的最后一个数据id,这样在增量索引时只需要索引这个id以后的数据即可,每次重新构建主索引时都更新这个表。
测试条件:以默认的sphinx.conf配置为例,数据库表的数据也以 example.sql为例。

