我开始使用cassandra,我想用sphinx索引我的数据库。 我写了ruby脚本,用作xmlpipe,我配置sphinx来使用它。
source xmlsrc
{
type = xmlpipe2
xmlpipe_command = /usr/local/bin/ruby /home/httpd/html/app/script/sphinxpipe.rb
}
当我从控制台输出运行脚本看起来很好,但是当我运行索引器时sphinx返回错误
$ indexer test_index
Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff
using config file '/usr/local/etc/sphinx.conf'...
indexing index 'test_index'...
ERROR: index 'test_index': source 'xmlsrc': attribute 'id' required in <sphinx:document> (line=10, pos=0, docid=0).
total 0 docs, 0 bytes
total 0.000 sec, 0 bytes/sec, 0.00 docs/sec
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
我的剧本非常简单
$stdout.sync = true
puts %{<?xml version="1.0" encoding="utf-8"?>}
puts %{<sphinx:docset>}
puts %{<sphinx:schema>}
puts %{<sphinx:field name="body"/>}
puts %{</sphinx:schema>}
puts %{<sphinx:document id="ba32c02e-79e2-11df-9815-af1b5f766459">}
puts %{<body><![CDATA[aaa]]></body>}
puts %{</sphinx:document>}
puts %{</sphinx:docset>}
我使用ruby 1.9.2-head,ubuntu 10.04,sphinx 0.9.9
我怎样才能让它发挥作用?
答案 0 :(得分:2)
我已经回答了自己的问题:)
sphinx在源代码中定义了文档最大ID
for 64 bit mashines
#define DOCID_MAX U64C(0xffffffffffffffff)
文件ID必须小于18446744073709551615
for 32 bit mashines
#define DOCID_MAX 0xffffffffUL
文件ID必须小于4294967295
我使用了SimpleUUID,为什么它不起作用