Sphinx复合(分布式)大指数

时间:2015-03-18 18:51:29

标签: sphinx

索引批量内容数据时遇到问题。寻找合适的解决方案。

如果遵循以下逻辑:

  • Robot每天都会将内容上传到数据库。

  • Sphinx索引必须仅重新索引新的(每日)数据。即以前的内容永远不会被更改。

Sphinx delta索引是一个精确的解决方案,但内容太多,错误正在上升:字符串属性太多(当前索引格式允许最多4 GB)。

分布式索引似乎可以使用,但如何动态(没有脏黑客)添加&拆分索引数据?

  • I.e。:第1天总计10000行,第2天 - 20000行等。索引在约60000行上抛出> 4GB错误。

  • 预期的索引流量:1-5天有1个索引(无论是否分发),6-10天-1分布式(复合)索引(50000 + 50000行)等等。

  • 问题是如何动态填充分布式索引?

     Daily iteration sample:
         main index
            chunk1  - 50000 rows
            chunk2  - 50000 rows
            chunk3  - 35000 rows           
    
         delta index
            10000 new rows
    
         rotate "delta"
    
         merge "delta" into "main"
    

请,建议。

1 个答案:

答案 0 :(得分:1)

感谢#barryhunter

RT索引是一个解决方案。

好的手册在这里:https://www.sphinxconnector.net/Tutorial/IntroductionToRealTimeIndexes

我已经测试了3 000 000 000个字母的匹配查询。速度接近于“普通”索引类型的速度。 HDD上的索引总大小约为2 GB。

填充sphinx rt指数: CPU使用率:1核/ 8核的~50%, RAM使用率:~0.5%/ 32 GB,速度:像往常一样快速选择 - 插入(主要取决于使用批量插入或逐行)

注意: “SELECT MAX(id)FROM sphinx_index_name”将产生错误“fullscan需要extern docinfo”。设置docinfo = extern不会解决这个问题。因此,只需在mysql表中保留计数器(例如sphinx delta index:http://sphinxsearch.com/docs/current.html#delta-updates)。