Sphinx关于DOCID_MAX ids的问题

WARNING: DOCID_MAX document_id, skipping

在window下的Sphinx重建索引的时候一直提示这个notice,导致大部分数据被过滤未成功索引。

原因是数据库的主键字段是20位的BIGINT,超出了Sphinx的32位版本的DOCID_MAX( 4294967295)的限定。

for 64 bit mashines
#define DOCID_MAX       U64C(0xffffffffffffffff)  要小于18446744073709551615
for 32 bit mashines
#define DOCID_MAX       0xffffffffUL 要小于 4294967295

 

解决办法:

如果是linux环境下,根据官方手册说的,带参数:–enable-id64 option 重新编译Sphinx
即可。

如果是window环境,在官方下载编译好了的64bit的版本(Win32 binaries w/MySQL+PgSQL+libstemmer+id64 support):http://sphinxsearch.com/downloads/beta/

 

P,当初下载没注意看浪费半天才搞清楚这问题。