将文档添加到Sphinx索引并修改其属性而不进行完全重建

时间:2011-01-25 18:40:51

标签: php indexing sphinx

我有一个基于Wordpress的网站,它使用Sphinx作为搜索引擎,通常的cron作业每隔N小时通过访问网站的MySQL数据库重建Sphinx索引。除了创建或编辑帖子之外,这种方法很好 - 在这种情况下,在重建索引之前,它仍然未编入索引或使用过时的属性编制索引。

根据Sphinx PHP API documentation,只允许更新已编入索引的文档,并且显然没有办法将新文档添加到索引中,而无需从头开始重建或与delta版合并。也无法从索引中删除文档。

此外,窥视UpdateAttributes源代码显示只允许更新数字属性(其他类型通过断言过滤掉)。这让我觉得Sphinx开发人员并不真正欢迎更新索引。

有没有什么方法可以解决这个问题,并且不仅可以根据需要修改索引,还可以根据需要修改特定文档?或者使用Sphinx是一种不好的做法,即使只有一个文档要更新,使用经常更新的delta索引与主要索引合并也是可接受的解决方案?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用Sphinx实时索引(http://sphinxsearch.com/docs/current.html#rt-overview)将一个文档添加到现有索引,而无需重建整个索引。