tsearch2 postgres
Herakles - 06-01-2007 00:02
tsearch2 postgres
Witam, no i męczę się niemiłosiernie, tak naprawdę nie wiem o co chodzi z tymi plikami dict, aff, stop. Aff i stop niby mam, ale dict? Czy ktoś mi może to jakoś krótko i sensownie wyłożyć.
hubert depesz lubaczewski - 06-01-2007 00:02
On 2007-01-05, Herakles <herakles@buziaczek.pl> wrote: > no i męczę się niemiłosiernie, tak naprawdę nie wiem o co chodzi z tymi > plikami dict, aff, stop. Aff i stop niby mam, ale dict? > Czy ktoś mi może to jakoś krótko i sensownie wyłożyć.
jakie dict? z readme które kroki zrobiłeś i jak. skąd wziąłeś dane?
depesz
-- http://www.depesz.com/ - blog dla ciebie
Herakles - 07-01-2007 00:10
hubert depesz lubaczewski wrote:
> On 2007-01-05, Herakles <herakles@buziaczek.pl> wrote: >> no i męczę się niemiłosiernie, tak naprawdę nie wiem o co chodzi z tymi >> plikami dict, aff, stop. Aff i stop niby mam, ale dict? >> Czy ktoś mi może to jakoś krótko i sensownie wyłożyć. > > jakie dict? z readme które kroki zrobiłeś i jak. skąd wziąłeś dane? > > depesz >
Problem polega na tym, że system jest dość sporo języczny (pl,en,de,lt,cz). Zwykłe bez lexize nie wchodzi w grę. Dążę równierz do tego, żeby instalacja nowych języków była prosta. Do tsearcha potrzebne są pliki med,aff,stop, jak zrobić ten pierwszy?
Herakles - 07-01-2007 00:10
Herakles wrote:
> Witam, > no i męczę się niemiłosiernie, tak naprawdę nie wiem o co chodzi z tymi > plikami dict, aff, stop. Aff i stop niby mam, ale dict? > Czy ktoś mi może to jakoś krótko i sensownie wyłożyć.
Dobra mam buga. Wszystko działa jak baza jest w latin2, problem polega na tym, że jak bazka jest w unicode, to
ts_test_utf=# select lexize('pl_ispell','monitory'); lexize ----------- {monitory}
A powinno być ts_test=# select lexize('pl_ispell','monitory'); lexize ----------- {monitor}
z tego wynika cała reszta to_tsvector....
Jeśli ktoś wie jak to rozwiązać na bazce w unikodzie, to będę dźwięczny, dodam, że próbowałem to wszystko co poniżej na różne sposoby, aby było w utf8(konwertując pliki i ustawiając inne locale w pg_ts_cfg) ale nic z tego. Może gdzieś czegoś niedopatrzyłem.
Poniżej zamieszczam małą instrukcję jak to ma wyglądać dla bazki w latin2, może komuś pomogę.
Zrobiłem tak: Zrobiłem se pliki: polish.iso2.med med zrobiłem tak: znalazłem na dysku w /usr/share/ispell/polish kilka plików .gz(A.gz, fachowe/*.gz...), połączyłem je i posortowałem tak jak w instrukcji tsearcha.
polish.iso2.aff aff znalazłem też gdzieś na dysku. oczywiście odnalezienie tych plików było następstwem instalacji aspella który instaluje się w deb z taką wtyczką ispell).
polish.iso2.stop stop zrobiłem sam (i w na pod o aby że za przez....)
zrobiłem tak może się komuś przyda(jako postgres): createdb -E LATIN2 -O herakles ts_test na tą operację zrobiłem usera heraklesa superuserem: psql -U herakles -W ts_test</usr/share/postgresql/8.1/contrib/tsearch2.sql
Następnie psql -U herakles -W i te kilka zapytań: INSERT INTO pg_ts_dict (SELECT 'pl_ispell', dict_init, 'DictFile="/var/lib/ispell/polish.iso2.med",' 'AffFile="/var/lib/ispell/polish.iso2.aff",' 'StopFile="/var/lib/ispell/polish.stop"', dict_lexize FROM pg_ts_dict WHERE dict_name = 'ispell_template'); INSERT INTO pg_ts_cfg values('default_polish','default','pl_PL.ISO-8859-2'); INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name) VALUES ('default_polish', 'lhword', '{pl_ispell}'); INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name) VALUES ('default_polish', 'lpart_hword', '{pl_ispell}'); INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name) VALUES ('default_polish', 'lword', '{pl_ispell}');
INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'url', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'host', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'sfloat', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'uri', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'int', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'float', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'email', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'word', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'hword', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'nlword', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'nlpart_hword', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'part_hword', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'nlhword', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'file', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'uint', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_polish', 'version', '{simple}');
I mam:
ts_test=# select lexize('pl_ispell','monitory'); lexize ----------- {monitor}
Dokładnie to co potrzeba, reszta już jest prosta.
Herakles - 08-01-2007 00:25
Herakles wrote:
> Herakles wrote: > >> Witam, >> no i męczę się niemiłosiernie, tak naprawdę nie wiem o co chodzi z tymi >> plikami dict, aff, stop. Aff i stop niby mam, ale dict? >> Czy ktoś mi może to jakoś krótko i sensownie wyłożyć. > No i gra muzyka, wyszło na to, że potrzebny jest 8.2 i initdb na jakimś unikodowym locale.
> Dobra mam buga. > Wszystko działa jak baza jest w latin2, problem polega na tym, że jak > bazka jest w unicode, to > > ts_test_utf=# select lexize('pl_ispell','monitory'); > lexize > ----------- > {monitory} > > A powinno być > ts_test=# select lexize('pl_ispell','monitory'); > lexize > ----------- > {monitor} > > z tego wynika cała reszta to_tsvector.... > > Jeśli ktoś wie jak to rozwiązać na bazce w unikodzie, to będę dźwięczny, > dodam, że próbowałem to wszystko co poniżej na różne sposoby, aby było w > utf8(konwertując pliki i ustawiając inne locale w pg_ts_cfg) ale nic z > tego. Może gdzieś czegoś niedopatrzyłem. > > > > Poniżej zamieszczam małą instrukcję jak to ma wyglądać dla bazki w latin2, > może komuś pomogę. > > > > Zrobiłem tak: > Zrobiłem se pliki: > polish.iso2.med > med zrobiłem tak: > znalazłem na dysku w /usr/share/ispell/polish kilka plików .gz(A.gz, > fachowe/*.gz...), połączyłem je i posortowałem tak jak w instrukcji > tsearcha. > > polish.iso2.aff > aff znalazłem też gdzieś na dysku. > oczywiście odnalezienie tych plików było następstwem instalacji aspella > który instaluje się w deb z taką wtyczką ispell). > > polish.iso2.stop > stop zrobiłem sam (i w na pod o aby że za przez....) > > zrobiłem tak może się komuś przyda(jako postgres): > createdb -E LATIN2 -O herakles ts_test > na tą operację zrobiłem usera heraklesa superuserem: > psql -U herakles -W ts_test</usr/share/postgresql/8.1/contrib/tsearch2.sql > > Następnie > psql -U herakles -W > i te kilka zapytań: > INSERT INTO pg_ts_dict > (SELECT 'pl_ispell', > dict_init, > 'DictFile="/var/lib/ispell/polish.iso2.med",' > 'AffFile="/var/lib/ispell/polish.iso2.aff",' > 'StopFile="/var/lib/ispell/polish.stop"', > dict_lexize > FROM pg_ts_dict > WHERE dict_name = 'ispell_template'); > INSERT INTO pg_ts_cfg > values('default_polish','default','pl_PL.ISO-8859-2'); INSERT INTO > pg_ts_cfgmap (ts_name, tok_alias, dict_name) > VALUES ('default_polish', 'lhword', '{pl_ispell}'); > INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name) > VALUES ('default_polish', 'lpart_hword', '{pl_ispell}'); > INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name) > VALUES ('default_polish', 'lword', '{pl_ispell}'); > > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'url', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'host', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'sfloat', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'uri', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'int', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'float', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'email', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'word', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'hword', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'nlword', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'nlpart_hword', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'part_hword', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'nlhword', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'file', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'uint', '{simple}'); > INSERT INTO pg_ts_cfgmap > VALUES ('default_polish', 'version', '{simple}'); > > I mam: > > ts_test=# select lexize('pl_ispell','monitory'); > lexize > ----------- > {monitor} > > Dokładnie to co potrzeba, reszta już jest prosta.
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.plwawa19wwa91.pev.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 |
|