abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:00 | Nová verze

    Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Komunita

    Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | Nová verze

    Waydroid (Wikipedie, GitHub) byl vydán v nové verzi 1.6.0. Waydroid umožňuje spouštět aplikace pro Android na běžných linuxových distribucích. Běhové prostředí vychází z LineageOS.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Nová verze

    Příspěvek na blogu Raspberry Pi představuje novou kompletně přepracovanou verzi 2.0 aplikace Raspberry Pi Imager (YouTube) pro stažení, nakonfigurování a zapsání obrazu operačního systému pro Raspberry Pi na SD kartu. Z novinek lze vypíchnout volitelnou konfiguraci Raspberry Pi Connect.

    Ladislav Hagara | Komentářů: 2
    včera 11:22 | Nová verze

    Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 8.00. Přináší podporu nejnovějších procesorů Intel a AMD nebo také tmavý režim.

    Ladislav Hagara | Komentářů: 0
    včera 10:55 | Nová verze

    Programovací jazyk Racket (Wikipedie), tj. jazyk z rodiny jazyků Lisp a potomek jazyka Scheme, byl vydán v nové major verzi 9.0. Hlavní novinku jsou paralelní vlákna (Parallel Threads).

    Ladislav Hagara | Komentářů: 0
    včera 10:11 | Komunita

    Před šesti týdny bylo oznámeno, že Qualcomm kupuje Arduino. Minulý týden byly na stránkách Arduina aktualizovány podmínky používání a zásady ochrany osobních údajů. Objevily se obavy, že by otevřená povaha Arduina mohla být ohrožena. Arduino ubezpečuje, že se nic nemění a například omezení reverzního inženýrství v podmínkách používání se týká pouze SaaS cloudové aplikace.

    Ladislav Hagara | Komentářů: 0
    23.11. 13:33 | Bezpečnostní upozornění

    Knihovna libpng, tj. oficiální referenční knihovna grafického formátu PNG (Portable Network Graphics), byla vydána ve verzi 1.6.51. Opraveny jsou 4 bezpečnostní chyby obsaženy ve verzích 1.6.0 (vydána 14. února 2013) až 1.6.50. Nejvážnější z chyb CVE-2025-65018 může vést ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 10
    23.11. 12:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 159 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.11. 22:33 | Zajímavý software

    Hru Warhammer: Vermintide 2 (ProtonDB) lze na Steamu získat zdarma napořád, když aktivaci provedete do pondělí 24. listopadu.

    Ladislav Hagara | Komentářů: 3
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (22%)
     (15%)
     (23%)
     (16%)
     (17%)
    Celkem 396 hlasů
     Komentářů: 17, poslední 19.11. 21:57
    Rozcestník

    Hledat či nehledat? A jak?

    13.3.2006 22:09 | Přečteno: 1707× | Python

    Už je to delší dobu, co jsem (aspoň doufám) vyrostl z období - než používat něco ne-úplně-jasného, to si to radši naprogramuju sám... Při programování se snažím používat již hotové nástroje a knihovny, leč ne vždy lze. Co použít na fulltextové prohledávání? A navíc v Pythonu?

    Aneb těžký život programátora v Pythonu, obzvláště programátora neziskových projektů...

    Zadání

    Nepřítel nám zadal webové stránky a my máme použít co nejchytřejší prohledávač v češtině. Nemůžeme použít Google či Jyxo, protože bychom nemohli (jednoduše) zpracovávat statistiky vyhledávání, navíc není možné (dostatečně) customizovat vzhled výsledků.

    Lucene

    K fulltextovému prohledávání existuje výborná knihovna Lucene, která je bohužel (Leoš promine) v Javě. Existují k ní sice porty CLucene (pro C++), Lucene4c (pro C) a jistě i pro jiné obskurní jazyky.

    Clucene a Python

    Pro CLucene existuje téměř přímočarý wrapper pro Python (SWIGový), ke kterému ovšem je nulová dokumentace a téměř žádný příklad použití (pouze testovací sada). Rozchození IndexWriteru, IndexReaderu a IndexSearcheru bylo úkolem značně netriviálním - naštěstí je možné použít dokumentaci k CLucene a nahlédnout do zdrojáku.

    Drobnou nevýhodou CLucene + Pythonového wrapperu je nemožnost (alespoň v mé konfiguraci) rozchodit jiný než StandardAnalyzer, pokusy o subclassing Analyzeru vedly spolelivě k core. Dočasně se to dá vyřešit prostým ořezáním diakritiky :-), ale do budoucna to jako průchozí řešení nevidím...

    Zkoumáním SWIGového kódu jsem žádný problém nenašel, po týdnu zkoumání jsem to (zatím) vzdal.

    Tady končí vyzkoušené (naprogramované) znalosti, zbytek jsem vyčetl z dokumentace.

    PyLucene

    Původní Lucene je více-méně bezproblémová knihovna, jenom je v Javě, což mne moc netěší, neboť mé programovací prostředí je Webware for Python. Částečným řešením může býti projekt PyLucene.

    PyLucene využívá možností kompilátoru gcj, který zkompiluje Javu do objektového kódu použitelného z C, ten se potom opět pomocí SWIGu zabalí do "úhledného" Pythonového modulu. Prý to funguje.

    Nevýhodou je mišmaš tří jazyků a tří paměťových modelů (Java = garbace collector, C++ = ruční uvolňování, Python = reference counting + garbage collector). Druhou nevýhodou - neméně podstatnou - jest moje nedůvěra k Javě, v ostrém prostředí nainstalovaná (zatím) není - počítač má pouze 360MB RAM a nechci ho trápit Javou, dokud to nebude akutně nutné.

    Lude

    Zajímavě se mi jeví Lude - démon, který běží na pozadí, přes XML-RPC se do něho tlačí dokumenty a požadavky na vyhledávání a padají z něho výsledky. Je v Javě (malé mínus), ale nemá ostrou verzi - mínus o něco větší. Zajímavé by bylo slepit CLucene a XML-RPC, dosáhlo by se tím větší rychlosti, navíc by to fungovalo bez Javy.

    MnogoSearch

    Pěkné, funkční, umí to český stemming(!), ale konfigurace pro prohledávání webu je velká. Navíc má špatné reference, co se týče výkonu. Moc důvěryhodně nepůsobí ani ukládání vyhledávacích dat v relační databázi. Neexistuje modul pro Python, ale v nejhorším případě se ponořím do PHP a napíšu si XML-RPC rozhraní :-)

    Vzhledem k tomu, že český stemming je založen na datech z ispellového slovníku, neměl by být velký problém jej z MnogoSearche vypárat.

    Xapian

    Na Xapian jsem narazil náhodou. Má vazbu pro Python, oproti Lucene mi není moc jasný indexovací koncept. Lucene je intuitivní, dokument má pole (fields), která nějak plním a podle nich se vyhledává. Xapian pole nemá, nebo jsou někde utajená? Takže nevím, kam mám vložit data ze titulku, apod...

    Pro rýpaly poznamenávám, že návod jsem si četl, jen jsem jej možná nepochopil dostatečně :-)

    Co dál?

    Zatím jsem použil CLucene + Python-wrapper. Češtinu odřezávám, takže můžu použít klasický StandardAnalyzer. Přemýšlím, čím ji nahradit, protože aktuální řešení je Quick and Dirty™

    Existuje nějaký další vyhledávací stroj? Pěkný, použitelný a udržovaný? V C, C++ nebo ideálně s Pythonovým wrapperem? Umí stemming? A alespoň z poloviny to co Lucene?

           

    Hodnocení: 83 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    13.3.2006 22:54 Pmx
    Rozbalit Rozbalit vše Re: Hledat či nehledat? A jak?
    Co je to stemming?
    Věroš avatar 13.3.2006 23:00 Věroš | skóre: 24 | blog: Co není v hlavě | 49.29 s.š., 16.54. v.d.
    Rozbalit Rozbalit vše Re: Hledat či nehledat? A jak?
    V podstatě rozpoznání stejných tvarů jednoho slova.

    Google na dotaz "define:stemming" tvrdí
    Word variations. For example, if I entered the query "swim", a search engine that supports stemming might return results that include "swimming" or "swims".
    Školím Ansible
    14.3.2006 06:52 petr_p
    Rozbalit Rozbalit vše Re: Hledat či nehledat? A jak?
    Nevyplatilo by se vzit nejaky free morfologicky analyzator (napr. ajku) a rozjet projekt podobny GNU/FDL Anglicko-ceskemu slovniku? Tak by se mohlo podarit vytvorit svobodnou morfologickou databazi ceskeho jazyka a tim by se vyresily vsechny problemy s ohybanim ceskych slov.

    Vim, ze proti stemmingu je to kanon na vrabce, ale bylo by to krasne.
    Věroš avatar 14.3.2006 13:38 Věroš | skóre: 24 | blog: Co není v hlavě | 49.29 s.š., 16.54. v.d.
    Rozbalit Rozbalit vše Re: Hledat či nehledat? A jak?
    Já nepotřebuju morfologický analyzátor, mě bude stačit (nějakou dobu) jenom stemming :-) Jen co najdu něco, co umí vyhledávat...
    Školím Ansible
    7.3.2007 00:42 David
    Rozbalit Rozbalit vše Re: Hledat či nehledat? A jak?
    A co Sherlock :) predchudce soucasneho Morfea ktery vyuziva centrum.cz Sherlock ma volne dostupne zdrojaky a je psan v C++ :)
    Věroš avatar 7.3.2007 01:00 Věroš | skóre: 24 | blog: Co není v hlavě | 49.29 s.š., 16.54. v.d.
    Rozbalit Rozbalit vše Re: Hledat či nehledat? A jak?
    Ejhle, na ten jsem zapomněl, pokud umí inteligentně stemovat, tak bych ho mohl ohnout.

    Ale od doby zápisku vyšel SOLR, do počítače se přidalo kvantum paměti a Javu by mohl unést, takže mířím spíše tím směrem.
    Školím Ansible

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.