我在我的网站上搜索全文搜索到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”来重建所有索引。
我这样做是对,还是我错过了什么?
答案 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()