本人刚刚接触Sphinx,用了近一周的时间看了一些Sphinx相关的资料,今天花一天的时间终于在测试环境上把csft-3.2.12安装成功了,遇到了一些问题,求高手赐教!
由于对Sphinx不熟悉,先将我这里的环境描述一下,内容可能比较多,主要是想表达以下几点:
1、64位的操作系统 2、数据库使用的是复合主键,且userId是bigint类型 3、建立索引的时候报出两个Warning: WARNING: zero/NULL document_id, skipping WARNING: duplicate document ids found
问题: 复合主键如何定义sql_query才能不出现重复docid. 建立索引的Warning对后续的使用会有影响吗?
环境描述:
A,环境 操作系统,CentOS 5.4 64位。 数据库: Mysql 5.1.50 编译安装 Sphinx: csft-3.2.12 Sphinx编译参数: ./configure --prefix=/usr/local/sphinx --with-python --enable-id64 --with-iconv --with-mysql=/usr/local/mysql5150 --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/
B,要建索引的Mysql表结构: CREATE TABLE `Message` ( `userId` bigint(20) NOT NULL DEFAULT '0', `serialNo` int(11) NOT NULL, `msgSender` bigint(20) DEFAULT NULL, `msgFrom` tinyint(4) DEFAULT NULL, `msgContent` varchar(8000) NOT NULL, `msgTime` datetime DEFAULT NULL, `msgStatus` tinyint(4) DEFAULT NULL, `msgType` smallint(6) DEFAULT '1', `msgTitle` varchar(50) DEFAULT NULL, PRIMARY KEY (`userId`,`serialNo`), KEY `msgTime` (`msgTime`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
C,Sphinx参数sql_query介绍 获取文档的主查询。必须的选项,无默认选项。仅适用于SQL数据源(mysql和pgsql)。 只能有一个主查询。它被用来从SQL服务器获取文档(文档列表)。可以指定多达32个全文数据字段(严格来说是在sphinx.h中定义的SPH_MAX_FIELDS个)和任意多个属性。所有既不是文档ID(第一列)也不是属性的列的数据会被用于建立全文索引。 文档ID必须是第一列,而且必须是唯一的正整数值(不能是0也不能是负数),既可以是32位的也可以是64位的,这要根据Sphinx是如何被构建的,默认情况下文档ID是32位的,但在运行configure脚本时指定--enable-id64选项会打开64位文档ID和词ID的支持。
D,csft.conf 部分配置信息 source Message { type = mysql sql_host = localhost sql_user = admin sql_pass = mypassword sql_db = test sql_port = 5150 sql_sock = /tmp/mysql5150.sock sql_query_pre = SET NAMES utf8 sql_query = \ SELECT userId,serialNo,msgFrom,msgStatus,msgType,UNIX_TIMESTAMP(msgTime) AS msgTime, msgContent \ FROM Message
sql_attr_uint = serialNo sql_attr_uint = msgFrom sql_attr_uint = msgStatus sql_attr_uint = msgType sql_attr_timestamp = msgTime sql_ranged_throttle = 0 }
E 创建索引 using config file '/usr/local/sphinx/etc/csft.conf'... indexing index 'Message'... WARNING: zero/NULL document_id, skipping collected 9988 docs, 1.5 MB sorted 3.3 Mhits, 92.4% done WARNING: duplicate document ids found total 9988 docs, 1457793 bytes total 1.745 sec, 835074 bytes/sec, 5721.47 docs/sec |