hetao29 / sphinx-chinese

sphinx of chinese with scws 中文支持
21 stars 5 forks source link

索引数据量较大时因为占用内存过大而退出 #1

Closed DongChengliang closed 7 years ago

DongChengliang commented 7 years ago

我按照说明文档在config文件中设置scws_dict为dict.utf8.txt,在索引一个mysql表(条目约40万,总数据大小约140M)时,大概在索引进行到10000个条目左右时,会显示 Killedted 10000 docs, 3.3 MB 然后退出。原因应该是索引程序占用内存过大,我在top中监测到索引程序内存占用会短时上升到800M以上。

hetao29 commented 7 years ago

确实有内存泄露,2个分支rel22-chinese和master-chinese已经解决 @https://github.com/hetao29/sphinx/commit/82fe60dc3fe35726c6fe99bdb29f43c2cbf07ecf

DongChengliang commented 7 years ago

另外,请问config文件中设置scws_dict为txt文件和xdb文件有何区别?是不是还会实时的生成一个临时的xdb文件作为真正在程序中使用的词典文件? 如果是这样,我可不可以设置为一个我已经加工好的xdb文件?

hetao29 commented 7 years ago

不建议直接设置xdb格式的,目前不支持直接设置xdb,目前自动生成的xdb格式的,有优化,只是第一次会比较慢,如果文件没有变动,结果是一样的

内存泄露的问题解决了,另外,如果你还发现内存不够用会不断上涨(你也可以关了scws测,一样会涨,是因为数据量大),建议加上这个 sql range http://sphinxsearch.com/docs/current.html#ranged-queries

DongChengliang commented 7 years ago

非常感谢! 内存泄露的问题应该是解决了。昨天同样的索引任务,顺利完成,内存没有暴增导致程序崩溃。 真心希望你把sphinx的中文模块完善好,以前有一个sphinx中文版叫coreseek的项目,多年没有维护,已经无法在新的ubuntu系统上顺利编译。我们的项目对sphinx重度依赖,非常希望能及时的把sphinx的新版本用于中文检索。

hetao29 commented 7 years ago

嗯 我们也是用到了这个 发现目前没有比较好方案了没办法 只有自己弄一个了 会一直保持和官网新版同步 老版本就不考虑了

hetao29 commented 7 years ago

最新的提交,支持多个dict文件了,同时也支持xdb格式的了,参考首页的使用说明

DongChengliang commented 7 years ago

已经试用直接设置xdb格式dict,没有问题。