@IvaYan

Как настроить RT индекс shpinx для поддержки кириллицы?

Всем привет!
Пытаюсь запустить Sphinx 2.2.4 и столкнулся с проблемой с кириллицей.
Конфигурация следующая:
index test_idx {
type = rt # realtime index
path = ./idx/testrt

rt_field = text # field to index

morphology = stem_enru
min_word_len = 1
rt_mem_limit = 256M
}

searchd {
listen = 3307:mysql41
log = ./logs/searchd.log
query_log = ./logs/query.log
read_timeout = 5
max_children = 30
pid_file = ./logs/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = ./idx
}

Для общения со сфинксом использую SphinxQL через консольный клиент mysql. Когда я
добавляют в индекс фразу на латинице, то все работает, поиск производится и т.д. Но если
добавить фразу на кириллице, то она никогда не будет найдена. Очевидно, что проблема с
кодировкой. Вопрос в том, как заставить сфинкс понимать кириллицу?
Я видел, что рекомендуют устанавливать charset_type = utf8, но стоит так сделать, как
searchd выводит сообщение "WARNING: key 'charset_type' was permanently removed from
Sphinx configuration. Refer to documentation for details." То есть, фактически, сфинкс
говорит что такого ключа больше нет, аналогичный результат и при использовании
charset_table.
Еще раз повторю: у меня нет БД, которая индексируется, в RT индекс данные добавляются
через SphinxQL.
  • Вопрос задан
  • 3180 просмотров
Пригласить эксперта
Ответы на вопрос 1
@klirichek
charset_type всего лишь определял, какую кодировку (однобайтную или юникод) пихать в сфинкс. Очевидно, что однобайтная - пережиток прошлого (нужно возиться с кодовыми страницами и т.д.), потому её устранили. А поскольку их было всего две, то устранили и опцию.

Тем не менее, charset_table никто не трогал, она по-прежнему работает. "аналогичного результата" с ней быть не может, проверяйте внимательнее!
Собственно, это и есть ключ.

charset_table определяет, как входной поток символов преобразуется перед тем, как его подхватит сфинкс. И ещё тут может повлиять ваш консольный клиент - потому что он тоже шлёт данные сфинксу в определённой кодировке.
Вообще есть "волшебная команда" show meta. Её можно запустить сразу после запроса, и она покажет, какие именно слова и как искал сфинкс.
Насколько я помню, раньше типичной проблемой было, когда как раз таки charset_type стоял в sbcs, а индексировали utf-8. Сейчас подобного уже быть не должно, но возможно что другое возникло.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы