Odvolávám vše, co jsem před časem tady na Rootu psal o nepoužitelnosti fulltextu u PSQL - bohužel mě tehdy nikdo neopravil, naopak mi tehdy potvrdili mojí nesprávnou představu o fungování tsearch2 (vycházela z nějakých starých pseudofulltextů, které kdysi pro PSQL byly). Pokud to funguje takhle, líbí se mi to.
Náhodou, když už jsme se dotkli tohoto tématu - nezná někdo nějaké podobné nekomerční fulltextové rozšíření pro Firebird (nejlépe 1.5)? S PSQL (zatím) nedělám, ale Firebird používám a fulltext občas citelně chybí...:-(
Názory k článku
Fulltextování v PostgreSQL - modul tsearch2
Odvolávám
celé vláknoRe: Odvolávám
celé vláknoPodle mě se to od toho starého a nepoužitelného řešení moc neliší. Jak jste si všimli v diskuzi, čeština nefunguje, což je docela problém. Takže je to vlastně na nic.
Na druhou stranu stemming je velice dobrá věc, snažím se něco podobného implementovat ve svém programu, ale nedaří se. Všechny slovníky jsou open-source, což je pro mě nepřijatelné...
Re: Odvolávám
celé vláknoCo znamena čeština nefunguje? Řekl bych, že funguje, resp. jediné co tam není je dohledání bez diakritiky. V podstatě si můžete překonvertovat slovníky do ascii, sice je budete mít dvakrát, ale teoreticky by mohl zafungovat převod na lexémy i bez diakritiky. Výsledek může být dost neurčitý, stejně jako kdekoliv jinde, kde se hraje s analýzou přirozeného textu. Nevím proč by měly být Open Source slovníky nepřijatelné - dost záleží pod jakou licencí jsou šířené, netuším jestli pod GNU. Jinak si můžete určitě pro češtinu nějaké slovníky koupit
Re: Odvolávám
celé vláknoKonvertovat slovníky do ASCII je blbost, ztrátou diakritiky ztrácíte informaci a program bude nacházet špatné stemmy. Ono by se dalo přimhouřit oko, ale pak mohou vyskočit nepřesné výsledky...
Slovníků jsem našel jen pár, myslím těch, které umějí koncovky. Všechny pod GPL. Bohužel jsem nenašel žádný, který by se dal koupit.
Pakliže funguje, tak je to v pořádku. Já to zkoušel, když nefungovala. Jinak - jak je to s rychlostí?
Re: Odvolávám
celé vláknoRychlost jsem neměřil, takže žádná absolutní čísla vám nepovím. Doufal jsem, že někdo kdo článek četl, a má větší databázi, že to zkusí. Subjektivně se mi to zdálo rychlé, dle konference to má být rychlé také. Chvilku trvá natažení slovníku při první lex. analýze.
Re: Odvolávám
celé vláknoJa to muzu zkusit zmerit a porovnat s MySQL. V soucasne dobe testuju fulltext na MySQL a Postgresu a mam k dispozici asi 1.4GiB txt dat (cca z 11GiB ruzne dokumentace), takze to tam pres vikend nasypu a zkusim otestovat. Je to relativne pomaly stroj (PII@366), ale to by pro porovnani nemelo prilis vadit. Kdyztak se mi ozvete pokud budete chtit podrobnosti.
Re: Odvolávám
celé vláknoJde spis o to, kolik mate pameti, a jek mate nakonfigurovany postgres. I kdyz 7.4 je nastavena tak, ze pocita, ze mate dost RAM.
Re: Odvolávám
celé vláknoPameti mam primerene (800MiB) a ten stroj neni prilis pametove zatizeny, takze muzu pocitat s tim ze bude volna. Na konfiguraci postgresu se muzu podivat, protoze zatim bezim na defaultni.
Oprava odkazu
celé vláknoV textu je chybně uvedený link na slovníky, má být http://postgresql.ok.cz/download/tseach2cz.tar.gz
Re: Oprava odkazu
celé vláknoV clanku jsem to opravila, tady jsi to napsal taky blbe :) (tseach -> tsearch). Sorry, mela jsem to lip zkontrolovat uz vcera...
Re: Oprava odkazu
celé vláknozrejme se k tobě už nedostala oprava, posilal jsem Vám opravu, nic se nestalo, a venku svítí sníh :->
Pekne...
celé vláknoSuper clanek, je vic takovych :-)
ft
celé vlákno..zatial to nie je priorita, ale casom by sa mala aj priamo v postgre objavit moznost indexovat fulltextom.. ale toto je pekne riesenie terajsej situacie :)
Diakritika
celé vláknoA co hledani a diakritika ? Lze zadat hledany vyraz bez diakritiky, aby se nalezl ulozeny s diakritikou (nebo naopak) ? Jak se tohle resi (treba google to umi). ?
Re: Diakritika
celé vláknonikde jsem si nevsiml, ze by se tam diakritika resila, takze predpokladam, ze to spis neumi
Re: Diakritika
celé vláknoNo prave, ja jsem si take nevsiml. Je to spis obecnejsi dotaz - jak obecne toto resit ? Nejspis nejakym indexovanim, indexovat pres funkci, ktera diakritiku odstrani. Pri zpracovani dotazu pak take nejprve diakritiku odstranit. Nebo nahradit vsechny non-ascii znaky nejakym zastupnym znakem (? jako wildcard). ?
Re: Diakritika
celé vláknoNešlo by to řešit pomocí slovníku? Když může simple slovník konvertovat velká písmena na malá, proč by nemohlo jít udělat slovník pro zbavení se diakritiky?
Re: Diakritika
celé vláknocreate or replace function lowerascii(text) returns text as
'
begin
return translate($1,
''AÁáBCČčDĎďEĚěÉéFGHIÍíJKLMNŇňOÓóPQRŘřSŠšTŤťUÚúŮůVWXYÝýZŽž'',
''aaabcccdddeeeeefghiiijklmnnnooopqrrrssstttuuuuuvwxyyyzzz'');
end;
' language plpgsql immutable returns null on null input;
Re: Diakritika
celé vláknonebo jeste jednoduseji
select to_ascii('Přiliš žluťoučký kůň','latin2');
to_ascii
----------------------
Prilis zlutoucky kun
Re: Diakritika
celé vláknoTo ale nebude fungovat v utf8 databazi.
Re: Diakritika
celé vláknonapr. takto:
conn=# select * from conn.t_ulice
where to_ascii(convert(ulice using utf_8_to_iso_8859_2),'latin2') like 'vinohradska';
ulice_id | ulice | mestska_cast_id | latitude | longitude
----------+-------------+-----------------+---------------+---------------
5679 | vinohradská | 21 | 50.077638979 | 14.4511329906
5680 | vinohradská | 20 | 50.0780777777 | 14.4609392857
5681 | vinohradská | 16 | 50.0771697916 | 14.4856454861
(3 rows)
Re: Diakritika
celé vláknoJeste existuje programek/knihovna "unaccent", pokryvajici udajne cely unicode (no, cestina je v pohode, ale... co cizi "podivne" znaky, ktere jsou podivne i bez diakritiky? transliteraci na vsechno to bohuzel nema, ale clovek si muze doplnit unicodove tabulky pred kompilaci dle sveho, treba...).
Kdysi jsem to uspesne zkousel naimportovat do PgSQL, i kdyz to bylo jenom narychlo pres Perl, ale zato opravdu narychlo a bez velke prace a fungovalo to.
Re: Diakritika
celé vláknoOdtud stahnout unaccent a zkompilovat, popr. pouzit RPM. Ja osobne jsem mel pri kompilaci problemy, RPMko zafugovalo na prvni pokus.
http://www.senga.org/download/unac/
V Postgresu rozjet podporu plperl - vychazel jsem odtud: http://www.root.cz/clanky/kratce-o-plperl/. Tedy nejprve nainstalovat Perl (nutno prelozit a zaregistrovat libperl). Pote ze zdrojaku zkompilovat Postgres: nejprve nutno provest ./configure --with-perl, pak make && make install. Pokud byl jiz Postgres drive kompilovan a instalovan, staci provest cd src/pl/plperl a make && make install (staci tedy dokompilovat a doinstalovat jen plperl, netreba to provadet s celym postgresem).
Nyni se prihlaste k Postgresu jako superuser (ucet root ci neco podobneho) a provedte CREATE LANGUAGE plperl; a pro untrusted perl (sic nebezpecne, ale nutne pro zavolani unaccentu) CREATE LANGUAGE plperlu;
Ted uz staci vytvorit nejakou tu stored procedure, ktera nam bude v postgresu vracet pozadovany retezec bez diakritiky:
create or replace function f_unaccent_utf8 (varchar) returns varchar
as
$$
my ($s_in) = @_;
return `unaccent utf8 $s_in`; #misto utf8 lze samozrejme pouzit jine kodovani
$$ language plperlu;
A ted otestovat:
SELECT f_unaccent_utf8('ěščřžýáíéĚŠČŘŽÝÁÍÉ');
& ENJOY!
Re: Diakritika
celé vláknoDíky, tohle mi pomohlo.
nejlepsi full-text pro tento rok?
celé vláknonejak jsem to ted neresil a koukam, ze co jsem povazoval za nejlepsi (http://www.aspseek.org/) nejak umrel.
Ma nekdo tip na nejaky *dobry* open source fulltext? Musi umet cestinu a unicode.
Re: nejlepsi full-text pro tento rok?
celé vláknoJakarta Lucene
Re: nejlepsi full-text pro tento rok?
celé vláknoLucene je jiz delsi dobu valcovana egotrem:
http://www.egothor.org/c124.html
Re: nejlepsi full-text pro tento rok?
celé vláknoV tom případě doufám, že to časem taky někdo přepíše do .NETu, ať to můžu používat pod Monem ;-)
http://sourceforge.net/projects/lucenedotnet

