Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8) / 7 сообщений из 7, страница 1 из 1
18.06.2007, 01:47
    #34600687
chernomyrdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8)
Всем привет,

Хотелось-бы проконсультироватся...
Есть Debian, в нем есть PG (8.2.4), в комплекте есть Tsearch2, но что-то не получается:

db=# SELECT to_tsvector('utf8_russian','проверка');
to_tsvector
-------------
'е':3 'п':1
(1 row)

Хотя для английских букв - все OK.

Чуствую что проблема где-то на поверхности, но где...
...
Рейтинг: 0 / 0
18.06.2007, 09:33
    #34600870
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8)
1. У вас все в порядке с кодировкой клиентского соединения? Серверу ваше слово "проверка" должно приходить в utf8.
2. Вставьте сюда вывод команды SELECT ts_debug('проверка'), сделав перед этим SELECT set_curcfg('utf8_russian').
...
Рейтинг: 0 / 0
18.06.2007, 11:06
    #34601155
chernomyrdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8)
Это с использованием стандартной psql:

db=# SELECT ts_debug('проверка');
ERROR: character 0xc295 of encoding "UTF8" has no equivalent in "KOI8"
db=# \encoding utf8
db=# SELECT ts_debug('проверка');
ts_debug
-------------------------------------------------------------
(utf8_russian,nlword,"Non-latin word",п,{ru_stem_utf8},'п')
(utf8_russian,nlword,"Non-latin word",о,{ru_stem_utf8},"")
(utf8_russian,nlword,"Non-latin word",е,{ru_stem_utf8},'е')
(utf8_russian,nlword,"Non-latin word",к,{ru_stem_utf8},"")
(4 rows)

db=#

В принципе точно такой-же эфект и в pgAdmin III... То есть если у клиента и сервера не совпадают кодировки то получается что-то типа:
# SELECT ts_debug('проверка');
ERROR: character 0xc295 of encoding "UTF8" has no equivalent in "KOI8"

Или все-таки я что-то не правильно делаю ?
P.S.
% locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=C
LC_TIME=C
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES=C
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

% cat test.utf
проверка

% od -tx1a test.utf
0000000 d0 bf d1 80 d0 be d0 b2 d0 b5 d1 80 d0 ba d0 b0
P ? Q nul P > P 2 P 5 Q nul P : P 0
0000020 0a
nl
0000021

% _
...
Рейтинг: 0 / 0
19.06.2007, 16:48
    #34605554
chernomyrdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8)
Что-то ни чего не понимаю, или в дистрибутиве Debian tsearch2.sql кривой, или (что наиболее вероятно) у меня руки не очень прямые...

Может-быть есть FAQ, по прикручиванию именно русского к tsearch2 ?
...
Рейтинг: 0 / 0
20.06.2007, 00:40
    #34606348
Nikolay Samokhvalov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8)
show server_encoding;
show client_encoding;
...
Рейтинг: 0 / 0
20.06.2007, 01:06
    #34606359
chernomyrdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8)
db=# show server_encoding;
server_encoding
-----------------
UTF8
(1 row)

db=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)

db=# SELECT ts_debug('тест');
ts_debug
-------------------------------------------------------------
(utf8_russian,nlword,"Non-latin word",т,{ru_stem_utf8},'т')
(utf8_russian,nlword,"Non-latin word",с,{ru_stem_utf8},"")
(2 rows)

db=# _

Хотя если сделать так - пересоздать базу данных с кодировкой KOI8, то все OK...
db=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)

db=# show server_encoding;
server_encoding
-----------------
KOI8
(1 row)

db=# SELECT ts_debug('тест');
ts_debug
-------------------------------------------------------------------
(utf8_russian,nlword,"Non-latin word",тест,{ru_stem_utf8},'тест')
(1 row)

db=# _

То есть скорее всего проблема именно в том что на той стороне (сервере) база данных создана в UTF-8
...
Рейтинг: 0 / 0
21.06.2007, 12:04
    #34610227
chernomyrdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8)
Все решилось после того как создал (посредством inidb) еще один кластер с указанием кодировки UTF8...
Насколько я понял проблема в том, что где-то внутри кластера прописываются локали которые потом используются...
Как их изменить без пере-создания кластера - еще не понял, буду думать...
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Debian + postgresql-8.2 (8.2.4) + Tsearch2 (RU.UTF-8) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]