Как заставить морфологию sphinx работать на utf8?

Я хочу использовать real-time индекс sphinx. Ниже конфиг:
index rt_compare
{
	type			= rt
	rt_mem_limit		= 32M

	charset_type = utf-8
	path			= /var/lib/sphinx/rt_compare
	morphology 		=  stem_enru

	rt_field		= content
	rt_attr_string		= content
	rt_attr_uint		= gid

	min_word_len = 3
}
searchd
{
	listen			= 9312
	listen			= 9306:mysql41
	log			= /var/log/sphinx/searchd.log
	query_log		= /var/log/sphinx/query.log
	read_timeout		= 5
	max_children		= 30
	pid_file		= /var/run/sphinx/searchd.pid
	max_matches		= 1000
	seamless_rotate		= 1
	preopen_indexes		= 1
	unlink_old		= 1
	workers			= threads # for RT to work
	binlog_path		= /var/lib/sphinx/
	collation_server = utf8_general_ci
}


Делаю запрос из php:

$pdo = new PDO("mysql:host=127.0.0.1;port=9306;charset=UTF8", "", "");
	$r = $pdo->exec("SET NAMES 'utf8'");
	$r = $pdo->exec("SET CHARACTER_SET_RESULTS=utf8");
	$r = $pdo->query("CALL KEYWORDS('машины', 'rt_compare')" );
	while( $row = $r->fetch() ){
		print_r( $row );
	}

Результат:
2bbea251819e4c6493fcb01fa0bbb0ea.png

Наблюдение: в /var/log/sphinx/query.log кладутся данные в windows1251:
b7da0bce91b946cd92ed211ea6794961.png
Но почему? Вот локали:
003c454b28bc48fbba9d3a0f12859258.png
Что пробовалось: morphology: stem_enru, lemmatize_ru. charset_table прописывалось, min_stemming_len = 3, dict = keywords в различных сочетаниях. Пробовал послать в windows-1251 - не получилось. Система: Centos 6.
Как же заставить sphinx нормализовывать?
  • Вопрос задан
  • 5518 просмотров
Решения вопроса 1
@alexios Автор вопроса
Все заработало когда поставил бету, вручную прописал lemmatizer_base в директорию, куда предварительно поместил словарь ru.pak.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mulat
@mulat
seo, php, yii2
Sphinx 2.2.9 Release

В блоке source прописать:

sql_query_pre = SET NAMES utf8
sql_query_pre = SET CHARACTER SET utf8


В блоке index:

morphology = stem_ru, stem_en
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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