Настройте merge_block_size в поисковой системе sphinx - PullRequest
5 голосов
/ 17 ноября 2008

Я включаю веб-поиск с использованием Sphinx и получаю следующее сообщение об ошибке при построении индексов:

ПРЕДУПРЕЖДЕНИЕ: sort_hits: merge_block_size = 76 кБ слишком мало, увеличение mem_limit может улучшить производительность

Проблема в том, что я не могу найти документацию о том, где настроен этот параметр. Я немного разбираюсь в настройке Sphinx, поэтому мне просто нужно знать, где настроен параметр.

Ответы [ 2 ]

5 голосов
/ 31 декабря 2008

Вероятно, это происходит потому, что вы пытаетесь проиндексировать слишком много элементов одновременно. Убедитесь, что вы используете ранжированные запросы . Если вы уже используете ранжированные запросы, может помочь увеличение mem_limit. merge_block_size основан на mem_limit и количестве документов.

Если вам интересно, как он генерирует это число, проверьте источник. Это свободно доступно.

3 голосов
/ 01 апреля 2011

В sphinx.conf:

sql_query_range   = SELECT MIN(id),MAX(id) FROM documents
sql_range_step = 1000
sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end

Если таблица содержит идентификаторы документов от 1 до, скажем, 2345, то sql_query будет запущен три раза:

  1. с заменой $ start на 1 и заменой $ end на 1000;
  2. с заменой $ start на 1001 и заменой $ end на 2000;
  3. с заменой $ start на 2000 и заменой $ end на 2345.

Очевидно, что для таблицы с 2000 строками разница невелика, но когда дело доходит до индексации таблицы MyISAM из 10 миллионов строк, ранжированные запросы может быть какой-то помощи.

http://sphinxsearch.com/docs/current.html#ranged-queries

Надеюсь, у вас это получится.

...