сфинкс, xmlpipe2 и кассандра - PullRequest
0 голосов
/ 17 июня 2010

Я начинаю использовать кассандру и хочу индексировать свою базу данных с помощью sphinx.Я написал скрипт ruby, который используется как xmlpipe, и настраиваю sphinx для его использования.

source xmlsrc
{
    type                                    = xmlpipe2
    xmlpipe_command                         = /usr/local/bin/ruby /home/httpd/html/app/script/sphinxpipe.rb
}

Когда я запускаю скрипт из консоли, вывод выглядит нормально, но когда я запускаю indexer 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

Как мне заставить это работать?

1 Ответ

2 голосов
/ 17 июня 2010

У меня есть ответ на мой вопрос:)

sphinx определил максимальный идентификатор документа в исходном коде

for 64 bit mashines
#define DOCID_MAX       U64C(0xffffffffffffffff) 

идентификатор документа должен быть меньше 18446744073709551615

for 32 bit mashines
#define DOCID_MAX       0xffffffffUL

идентификатор документа должен быть меньше 4294967295

Я использовал SimpleUUID, поэтому он не работает

...