[PostgreSQL] TSearch2, ispell i polskie ogonki
Piotr Gasidlo - 13-11-2006 00:14
[PostgreSQL] TSearch2, ispell i polskie ogonki
Witam, Po przeczytaniu kilku poradników odnośnie TSearch2 postanowiłem zbudować polski słownik.
Pobrałem: http://www.kurnik.org/dictionary/alt...03-src.tar.bz2
Następnie przy pomocy iconv przekonwertowałem z iso-8859-2 na utf-8 pliki polish.all (lista słów) i polish.aff (regułki?) i zapisałem je odpowiednio do plików polish.dict.utf8 i polish.aff.utf8.
Stworzyłem nową bazę danych:
Name | Owner | Encoding ----------+---------------+---------- quaker | quaker | UTF8
Następnie wykonałem: insert into pg_ts_dict ( select 'pl_ispell', dict_init, 'DictFile="/home/quaker/ispell/polish.dict.utf8",AffFile="/home/quaker/ispell/polish.aff.utf8",StopFile="/home/quaker/ispell/polish.stop"', dict_lexize from pg_ts_dict where dict_name = 'ispell_template' );
I wygląda, że wszystko działa, lecz tylko gdy nie ma polskich znaczków:
quaker=> select lexize('pl_ispell','automechanika'),lexize('pl_isp ell','automechanikowi'),lexize('pl_ispell','autome chaników'); lexize | lexize | lexize ----------------+----------------+-------- {automechanik} | {automechanik} | (1 row)
Jak to przeskoczyć? System to UBuntu 6.06, wg. locale:
LANG=pl_PL.UTF-8 LANGUAGE=pl_PL:pl:en_GB:en LC_CTYPE="pl_PL.UTF-8" LC_NUMERIC="pl_PL.UTF-8" LC_TIME="pl_PL.UTF-8" LC_COLLATE="pl_PL.UTF-8" LC_MONETARY="pl_PL.UTF-8" LC_MESSAGES="pl_PL.UTF-8" LC_PAPER="pl_PL.UTF-8" LC_NAME="pl_PL.UTF-8" LC_ADDRESS="pl_PL.UTF-8" LC_TELEPHONE="pl_PL.UTF-8" LC_MEASUREMENT="pl_PL.UTF-8" LC_IDENTIFICATION="pl_PL.UTF-8" LC_ALL=
-- Piotr 'QuakeR' Gasidło, BOFH @ pandora.barbara.eu.org ############## sending lusers to /dev/null since 1998 ##### Waiting for tomorrow, for a little ray of light ### Waiting for tomorrow just to see your smile again
Piotr Gasidlo - 13-11-2006 00:14
On 2006-10-03, Piotr Gasidlo <quaker@pandora.barbara.eu.org> wrote: (...) > '...,StopFile="/home/quaker/ispell/polish.stop"', (...)
Plik polish.stop też stworzyłem. Jest pusty.
-- Piotr 'QuakeR' Gasidło, BOFH @ pandora.barbara.eu.org ############## sending lusers to /dev/null since 1998 ##### Waiting for tomorrow, for a little ray of light ### Waiting for tomorrow just to see your smile again
Piotr Gasidlo - 13-11-2006 00:14
On 2006-10-03, Piotr Gasidlo <quaker@pandora.barbara.eu.org> wrote: > quaker=> select lexize('pl_ispell','automechanika'),lexize('pl_isp ell','automechanikowi'),lexize('pl_ispell','autome chaników'); > lexize | lexize | lexize > ----------------+----------------+-------- > {automechanik} | {automechanik} | > (1 row)
Problem dotyczy obecności polskich znaków w sufiksie wyrazu, nie w temacie:
quaker=> select lexize('pl_ispell','główny'),lexize('pl_ispell','g łówna'); lexize | lexize ----------+---------- {główny} | {główny} (1 row)
Tutaj widać że wszystko działa jak należy.
-- Piotr 'QuakeR' Gasidło, BOFH @ pandora.barbara.eu.org ############## sending lusers to /dev/null since 1998 ##### Waiting for tomorrow, for a little ray of light ### Waiting for tomorrow just to see your smile again
Bartek Siebab - 13-11-2006 00:16
> Piotr Gasidlo w dniu 2006-10-03 15:55 pisze:
> Jak to przeskoczyć? System to UBuntu 6.06, wg. locale: > > LANG=pl_PL.UTF-8 > LANGUAGE=pl_PL:pl:en_GB:en > LC_CTYPE="pl_PL.UTF-8" > LC_NUMERIC="pl_PL.UTF-8" > LC_TIME="pl_PL.UTF-8" > LC_COLLATE="pl_PL.UTF-8" > LC_MONETARY="pl_PL.UTF-8" > LC_MESSAGES="pl_PL.UTF-8" > LC_PAPER="pl_PL.UTF-8" > LC_NAME="pl_PL.UTF-8" > LC_ADDRESS="pl_PL.UTF-8" > LC_TELEPHONE="pl_PL.UTF-8" > LC_MEASUREMENT="pl_PL.UTF-8" > LC_IDENTIFICATION="pl_PL.UTF-8" > LC_ALL= >
a jesteś w 100% przekonany że takie locale działają dobrze? bo ja właśnie parę dni temu trafiłem na minę na FC5 z postgresql'em przy sortowaniu robił bzdury i musiałem initdb puszczać ponownie na zmienionych locale'ach na zwyczajne pl_PL bez UTF-8
-- ..---------- -------- ------ ---- ---- --- - -- - | Bartek `saphire` Siebab http://bartek.siebab.net
Piotr Gasidlo - 13-11-2006 00:44
On 2006-10-08, Bartek Siebab <bs@vt.pl> wrote: > > Piotr Gasidlo w dniu 2006-10-03 15:55 pisze: > >> Jak to przeskoczyć? System to UBuntu 6.06, wg. locale: >> >> LANG=pl_PL.UTF-8 >> LANGUAGE=pl_PL:pl:en_GB:en >> LC_CTYPE="pl_PL.UTF-8" >> LC_NUMERIC="pl_PL.UTF-8" >> LC_TIME="pl_PL.UTF-8" >> LC_COLLATE="pl_PL.UTF-8" >> LC_MONETARY="pl_PL.UTF-8" >> LC_MESSAGES="pl_PL.UTF-8" >> LC_PAPER="pl_PL.UTF-8" >> LC_NAME="pl_PL.UTF-8" >> LC_ADDRESS="pl_PL.UTF-8" >> LC_TELEPHONE="pl_PL.UTF-8" >> LC_MEASUREMENT="pl_PL.UTF-8" >> LC_IDENTIFICATION="pl_PL.UTF-8" >> LC_ALL= >> > > a jesteś w 100% przekonany że takie locale działają dobrze?
Tzn. nie wiem jak to sprawdzić na 100%. Pliki tworzone przez vim mają pliterki w UTF-8, łącząć się zdalnie z takim systemem przez Putty muszę właczyć Window | Translation z ISO-8859-2 na UTF-8.
> bo ja właśnie parę dni temu trafiłem na minę na FC5 z postgresql'em > przy sortowaniu robił bzdury i musiałem initdb puszczać > ponownie na zmienionych locale'ach na zwyczajne pl_PL bez UTF-8
Spróbuję więc dla pl_PL. Zobaczę co wyjdzie. Wzorowałem się na tym dokumencie, w którym (dla de_DE.UTF-8) działało.
http://www.sai.msu.su/~megera/postgr...rman_utf8.html i arykułom jak podłaczyć słownik aspell.
-- Piotr 'QuakeR' Gasidło, BOFH @ pandora.barbara.eu.org ############## sending lusers to /dev/null since 1998 ##### Waiting for tomorrow, for a little ray of light ### Waiting for tomorrow just to see your smile again
Piotr Gasidlo - 13-11-2006 00:44
On 2006-10-14, Piotr Gasidlo <quaker@pandora.barbara.eu.org> wrote: >> a jesteś w 100% przekonany że takie locale działają dobrze? > Spróbuję więc dla pl_PL. Zobaczę co wyjdzie. Wzorowałem się na tym > dokumencie, w którym (dla de_DE.UTF-8) działało. > > http://www.sai.msu.su/~megera/postgr...rman_utf8.html > i arykułom jak podłaczyć słownik aspell.
Miał być ispell.
Spróbowałem, wszędzie pl_PL, pg_controldata zwraca że klaster został utworzony z lokalami pl_PL, LC_* ustawione wszędzie na pl_PL. Nadal ten sam problem:
template1=# select lexize('pl_ispell', 'żaba'), lexize('pl_ispell','żaby'), lexize('pl_ispell','głośnika'), lexize('pl_ispell','głośników');
lexize | lexize | lexize | lexize --------+--------+-----------+-------- {żaba} | {żaba} | {głośnik} | (1 row)
A miało być tak pięknie ... :/
-- Piotr 'QuakeR' Gasidło, BOFH @ pandora.barbara.eu.org ############## sending lusers to /dev/null since 1998 ##### Waiting for tomorrow, for a little ray of light ### Waiting for tomorrow just to see your smile again
Piotr Gasidlo - 13-11-2006 00:44
On 2006-10-14, Piotr Gasidlo <quaker@pandora.barbara.eu.org> wrote: > Spróbowałem, wszędzie pl_PL, pg_controldata zwraca że klaster został > utworzony z lokalami pl_PL, LC_* ustawione wszędzie na pl_PL. Nadal ten > sam problem: > > template1=# select > lexize('pl_ispell', 'żaba'), > lexize('pl_ispell','żaby'), > lexize('pl_ispell','głośnika'), > lexize('pl_ispell','głośników'); > > lexize | lexize | lexize | lexize > --------+--------+-----------+-------- > {żaba} | {żaba} | {głośnik} | > (1 row) > > A miało być tak pięknie ... :/
Wycofuje. Coś musiałem pokręcić. Mam ;-)
lexize | lexize | lexize | lexize --------+--------+-----------+----------- {żaba} | {żaba} | {głośnik} | {głośnik} (1 row)
-- Piotr 'QuakeR' Gasidło, BOFH @ pandora.barbara.eu.org ############## sending lusers to /dev/null since 1998 ##### Waiting for tomorrow, for a little ray of light ### Waiting for tomorrow just to see your smile again
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
zanotowane.pldoc.pisz.plpdf.pisz.plmorebeer.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|