我有一个基于Wordpress的网站,它使用Sphinx作为搜索引擎,通常的cron作业每隔N小时通过访问网站的MySQL数据库重建Sphinx索引。除了创建或编辑帖子之外,这种方法很好 - 在这种情况下,在重建索引之前,它仍然未编入索引或使用过时的属性编制索引。
根据Sphinx PHP API documentation,只允许更新已编入索引的文档,并且显然没有办法将新文档添加到索引中,而无需从头开始重建或与delta版合并。也无法从索引中删除文档。
此外,窥视UpdateAttributes源代码显示只允许更新数字属性(其他类型通过断言过滤掉)。这让我觉得Sphinx开发人员并不真正欢迎更新索引。
有没有什么方法可以解决这个问题,并且不仅可以根据需要修改索引,还可以根据需要修改特定文档?或者使用Sphinx是一种不好的做法,即使只有一个文档要更新,使用经常更新的delta索引与主要索引合并也是可接受的解决方案?
提前致谢。
答案 0 :(得分:2)
您可以尝试使用Sphinx实时索引(http://sphinxsearch.com/docs/current.html#rt-overview)将一个文档添加到现有索引,而无需重建整个索引。