Re: tsearch2 и unicode

From: "Evgeny M(dot) Baldin" <E(dot)M(dot)Baldin(at)inp(dot)nsk(dot)su>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: tsearch2 и unicode
Date: 2007-01-03 13:07:47
Message-ID: Pine.LNX.4.64.0701031857250.9110@star.inp.nsk.su
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(dot)M(dot)Baldin(at)inp(dot)nsk(dot)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
>>
>
>
>
>From pgsql-ru-general-owner(at)postgresql(dot)org Wed Jan 3 09:51:03 2007
Received: from localhost (maia-1.hub.org [200.46.204.191])
by postgresql.org (Postfix) with ESMTP id B4AF39FA249
for <pgsql-ru-general-postgresql(dot)org(at)postgresql(dot)org>; Wed, 3 Jan 2007 09:51:02 -0400 (AST)
Received: from postgresql.org ([200.46.204.71])
by localhost (mx1.hub.org [200.46.204.191]) (amavisd-new, port 10024)
with ESMTP id 21640-10 for <pgsql-ru-general-postgresql(dot)org(at)postgresql(dot)org>;
Wed, 3 Jan 2007 09:50:51 -0400 (AST)
X-Greylist: delayed 00:31:47.987208 by SQLgrey-1.7.4
Received: from ircenter.ru (ircenter.ru [195.46.118.206])
by postgresql.org (Postfix) with ESMTP id DFBCB9FA2EC
for <pgsql-ru-general(at)postgresql(dot)org>; Wed, 3 Jan 2007 09:50:51 -0400 (AST)
Received: by ircenter.ru (Postfix, from userid 601)
id 8F4BC258B8E; Wed, 3 Jan 2007 21:19:07 +0800 (IRKT)
Received: from [80.92.195.237] (unknown [80.92.195.237])
by ircenter.ru (Postfix) with ESMTP id 9E782258B8D
for <pgsql-ru-general(at)postgresql(dot)org>; Wed, 3 Jan 2007 21:18:58 +0800 (IRKT)
Message-ID: <459BAD42(dot)5060505(at)ircenter(dot)ru>
Date: Wed, 03 Jan 2007 21:18:58 +0800
From: "Alexey V. Kharlov" <lex(at)ircenter(dot)ru>
User-Agent: Thunderbird 1.5.0.8 (X11/20061115)
MIME-Version: 1.0
To: pgsql-ru-general(at)postgresql(dot)org
Subject: UTF =?KOI8-R?Q?=D3=CF=D2=D4=C9=D2=CF=D7=CB=C1_=D4=C5=CB=D3=D4=CF?=
=?KOI8-R?Q?=D7=CF=C7=CF_=D0=CF=CC=D1_=D3_=D2=D5=D3=D3=CB=C9=CD_=D4?=
=?KOI8-R?Q?=C5=CB=D3=D4=CF=CD?=
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: Maia Mailguard 1.0.1
X-Spam-Status: No, hits=1.724 tagged_above=0 required=5 tests=BAYES_50,
SUBJECT_ENCODED_TWICE
X-Spam-Level: *
X-Archive-Number: 200701/4
X-Sequence-Number: 597

Здраствуйте!

Хотел бы прояснить ситуацию с UTF, мне что бы нормально работать с
сортировкой текстовых полей приходиться создавать базу в KOI8, возможно
ли сделать что бы в UTF-ной базе нормально работала сортировка текстовых
полей содержащих русский текст.

С уважением
Харлов Алексей Викторович
lex(at)ircenter(dot)ru

In response to

Browse pgsql-ru-general by date

  From Date Subject
Next Message Evgeny M. Baldin 2007-01-03 14:17:10 Re: UTF сортировка тексто
Previous Message Evgeny M. Baldin 2007-01-03 08:01:10 tsearch2 и unicode