Re: tsearch2 и unicode - Mailing list pgsql-ru-general

From Evgeny M. Baldin
Subject Re: tsearch2 и unicode
Date
Msg-id Pine.LNX.4.64.0701031857250.9110@star.inp.nsk.su
Whole thread Raw
In response to tsearch2 и unicode  ("Evgeny M. Baldin" <E.M.Baldin@inp.nsk.su>)
List pgsql-ru-general
Добрый день

  Проблема решилась тем, что я скачал и собрал PostgreSQL 8.2 - заработало
и с локалью ru_RU.UTF-8. Почему не работала раньше я так и не понял.

> pg_ts_cfg - в Ваших распоряжении, Вам надо только проапдейтить её :-)
> указав таким образом, какая рабочая кодировка используется.

  На сколько я понимаю в pg_ts_cfgmap всё было описано правильно и по
умолчанию использовалсь utf8_russian.

С уважением
     Евгений

P.S. В последней стабильной версии MediaWiki 1.8.2 при работе с PostgreSQL
есть бага (?) которая не позволяет организовать полнотекстный поиск для
нелатиницы (например, русских слов). Я попытался описать решение в
меру своего понимания вот здесь:
http://bugzilla.wikimedia.org/show_bug.cgi?id=8470


On Wed, 3 Jan 2007, Nikolay Samokhvalov wrote:

> pg_ts_cfg - в Ваших распоряжении, Вам надо только проапдейтить её :-)
> указав таким образом, какая рабочая кодировка используется.
>
> Вот пример создания рабочей конфигурации "с нуля" (кстати, как раз
> UTF-8): http://www.sai.msu.su/~megera/wiki/pgweb_cfg
>
> On 1/3/07, Evgeny M. Baldin <E.M.Baldin@inp.nsk.su> wrote:
>>  Добрый день
>>
>>    Преамбула: пытаюсь настроить русский полнотекстный поиск в MediaWiki
>>  (wiki-движок который используется в Википедии) с использование в
>>  качестве хранилища PostgreSQL версии 8.1.4
>>
>>    Амбула: MediaWiki пишет текст всегда в UTF8, поэтому, естественно
>>  настроить tsearch2, чтобы работал с unicode. Для этого собрал и установил
>>  tsearch2 из PostgreSQL 8.2 (tsearch2.82.tar.gz с официального сайта
>>  tsearch2), который поддерживает UTF-8. Сделал initdb с ключиком
>>  --locale=ru_RU.UTF-8
>>
>>    Возникло непонимание:
>>
>>  wikidb=# show lc_collate;
>>    lc_collate
>>  -------------
>>    ru_RU.UTF-8
>>  (1 row)
>>
>>  wikidb=# select * from pg_ts_cfg;
>>  ts_name     | prs_name |    locale
>>  -----------------+----------+--------------
>>    default_russian | default  | ru_RU.KOI8-R
>>    utf8_russian    | default  | ru_RU.UTF-8
>>    simple          | default  |
>>    default         | default  | ru_RU.UTF-8
>>  (4 rows)
>>
>>
>>  Есть некое текстовое поле old_text в таблице mediawiki.pagecontent -
>>  запись в UTF8, а клиент у меня в koi8, поэтому для отображения использую
>>  convert
>>
>>  wikidb=# select convert(old_text,'UTF8','KOI8'),
>>     to_tsvector(old_text) from mediawiki.pagecontent
>>     where old_id=1500;
>>
>>      convert   | to_tsvector
>>  -------------+-------------
>>    proba проба | 'proba':1
>>  (1 row)
>>
>>  ! В результате индексируется только латиница
>>
>>  Аналогичную процедуру сделал когда initdb запускалась с ключиком
>>  --locale=ru_RU.KOI8-R
>>
>>  wikidb=# show lc_collate;
>>     lc_collate
>>  --------------
>>    ru_RU.KOI8-R
>>
>>  wikidb=# select * from pg_ts_cfg;
>>  ts_name     | prs_name |    locale
>>  -----------------+----------+--------------
>>    default_russian | default  | ru_RU.KOI8-R
>>    utf8_russian    | default  | ru_RU.UTF-8
>>    simple          | default  |
>>    default         | default  | ru_RU.KOI8-R
>>  (4 rows)
>>
>>
>>  wikidb=# select convert(old_text,'UTF8','KOI8'),
>>     to_tsvector(convert(old_text,'UTF8', 'KOI8')) from
>>     mediawiki.pagecontent where old_id=1499;
>>      convert   |     to_tsvector
>>  -------------+---------------------
>>    проба proba | 'proba':2 'проба':1
>>  (1 row)
>>                            ------
>>
>>  То есть в первом случае русские слова не индексируются, а во втором
>>  проблем нет. В каком месте разложены грабли?
>>
>>  С уважением
>>          Евгений
>>
>>  P.S. С наступившим Новым Годом всех, естественно.
>>  ---------------------------(end of broadcast)---------------------------
>>  TIP 7: You can help support the PostgreSQL project by donating at
>>
>>                  http://www.postgresql.org/about/donate
>>
>
>
>

pgsql-ru-general by date:

Previous
From: "Nikolay Samokhvalov"
Date:
Subject: Re: tsearch2 и unicode
Next
From: "Alexey V. Kharlov"
Date:
Subject: UTF сортировка текстового поля с русским текстом