我已经阅读了Sphinx文档和各种资源,但我对维护主索引和delta索引的过程感到困惑。如果这是正确的,请告诉我:
有一个表格按last_update_time
分区搜索索引(不是教程http://sphinxsearch.com/docs/1.10/delta-updates.html中的ID)
每15分钟更新一次增量索引。增量索引仅获取已更新的记录> last_update_time
:
indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta
通过使用以下方法合并delta来每小时更新一次主索引:
indexer --merge main delta --merge-dst-range deleted 0 0 --rotate
预查询SQL会将last_update_time
更新为NOW()
,这会重新分区索引
混淆:合并是否会运行预查询SQL?
更新主索引后,立即更新增量索引以进行清理:
indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta
答案 0 :(得分:2)
要处理需要查看killlist的删除,它基本上定义了删除标准:
http://sphinxsearch.com/docs/manual-1.10.html#conf-sql-query-killlist
在一个例子中,我让我们每天早上构建我们的主要内容,然后每隔5分钟运行一次delta更新(包括killlist)。
关于合并的东西,我不确定,因为我从未使用它。
答案 1 :(得分:0)
这只是工作的一半。必须由kill list(现在称为kbatch)小心删除已删除的内容,然后delta将不会显示已删除的结果。但是,如果您合并-它们会重新出现。要解决此问题-您必须
indexer --merge main delta --merge-dst-range deleted 0 0 --rotate
但是,要使其正常工作-您需要将一个“已删除”属性添加到删除的每个结果中。然后合并过程将筛选出删除了= 1的结果,而主索引中将没有删除结果。