在sphinx中使用main和delta索引

时间:2010-10-02 23:15:45

标签: php sphinx thinking-sphinx

我在我的网站上搜索全文搜索到sphinx。我将使用SphinxSE来执行搜索。

我创建了2个索引,如手册中所述:http://www.sphinxsearch.com/docs/manual-0.9.9.html#live-updates

它似乎工作,并在其自己的索引中索引不同的东西,但我有点困惑我应该如何处理索引更新,合并和重建。

我理解的方法是我每隔5分钟左右运行一次“indexer delta --rotate”,这会为索引添加新的提交。然后每天一次,我会通过运行“indexer main delta --rotate”将delta索引合并到主索引中。然后一个月左右,我将运行“indexer --all”来重建所有索引。

我这样做是对,还是我错过了什么?

2 个答案:

答案 0 :(得分:3)

听起来非常像我为客户所做的设置。不,搜索不会在更新期间停止工作。来自Sphinx文档:

  

- rotate用于旋转索引。除非你有这种情况   你可以采取搜索功能   离线时没有麻烦用户,你   几乎肯定需要保持   搜索运行,同时索引新的   文档。 --rotate创造了第二个   索引,与第一个平行(在   同一个地方,简单地包括.new in   文件名)。一旦完成,索引器   通过发送通知搜索   SIGHUP信号,并搜索将   尝试重命名索引   (将现有的重命名为包含   .old并重命名.new来替换   他们),然后开始服务   较新的文件。根据设置   of seamless_rotate,可能有一个   能够搜索的轻微延迟   较新的索引。

答案 1 :(得分:2)

- 旋转只会在tmp(需要空间磁盘)中构建索引,并在完成时切换+重新启动搜索。

关于delta,你需要使用预查询来计算“limit”max(id)  主要索引ID低于限制,delta达到此限制。

如果您有时间戳(如果可能,请编入索引),您可以使用它

主要 - >其中timefile<今天() delta - >其中timefile> = today()