2010-04-30 2 views
1

Я получаю доступ к большому индексированному набору данных текста, используя sphinxse через MySQL. Размер набора результатов составляет порядка гигабайт. Тем не менее, я заметил, что MySQL останавливает запрос со следующей ошибкой всякий раз, когда набор данных превышает 16 МБ:Проблема с результатами Sphinx больше 16 МБ в MySQL

1430 (HY000): возникла проблема с обработкой запроса на чужом источнике данных. Ошибка источника данных: плохая длина ответа searchd (длина = 16777523)

Длина показывает длину результатов, которые оскорбили MySQL. Я пробовал тот же запрос с помощью автономной поисковой программы Sphinx. Он работает нормально. Я пробовал все возможные переменные в MySQL и Sphinx, но ничего не помогает.

Я использую Sphinx 0.9.9 rc-2 и MySQL 5.1.46.

Благодаря

ответ

0

вы, вероятно, необходимо увеличить max_allowed_packet от его стоимости 16М по умолчанию:

От mysql's documentation

И клиент, и сервер имеют свои собственные переменные max_allowed_packet, так что если вы хотите обрабатывать больших пакетов, вы должны увеличить эту переменную как на клиенте, так и на сервере.

Если вы используете клиентскую программу mysql, переменная max_allowed_packet по умолчанию - 16 МБ. Для того, чтобы установить более высокое значение, начать MySQL как это:

оболочки> MySQL --max_allowed_packet = 32M

, который устанавливает размер пакета 32 Мб.

+0

Спасибо за ваш ответ. Я уже пробовал max_allowed_packet как на сервере, так и на клиенте. Он не работал :( – gmemon

1

Я, наконец, решил проблему. Оказывается, что плагин sphinx для mysql (SphinxSE) жестко кодирует предел ответа 16 МБ в наборе результатов в исходном коде (плохой плохой исходный код). Я изменил SPHINXSE_MAX_ALLOC на 1 * 1024 * 1024 * 1024 в файле ha_sphinx.cc, и теперь все работает отлично.

 Смежные вопросы

  • Нет связанных вопросов^_^