索引批量内容数据时遇到问题。寻找合适的解决方案。
如果遵循以下逻辑:
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"
请,建议。
答案 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)。