Re: tsearch2 и unicode
От | Nikolay Samokhvalov |
---|---|
Тема | Re: tsearch2 и unicode |
Дата | |
Msg-id | e431ff4c0701030446r6ee8d347kc62ac3113697e87c@mail.gmail.com обсуждение исходный текст |
Ответ на | tsearch2 и unicode ("Evgeny M. Baldin" <E.M.Baldin@inp.nsk.su>) |
Список | pgsql-ru-general |
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 > -- Best regards, Nikolay
В списке pgsql-ru-general по дате отправления: