Rádi byste chtěli něco podobného, jako mají uživatelé MacOS nebo Visty, tedy rychlé prohledávání metadat? V Linuxu sice existují nástroje, například Beagle, jenže to je žrout prostředků napsaný v jazyce C#. A projekt Kat je mrtvý. Co teď?
Představuji Tracker
Tracker je šikovný malý démonek, který docela rychle umí indexovat mnoho obsahu. Je napsán v jazyce C a sám o sobě zná mnoho formátů, namátkou HTML, PDF, PS, OLE2 (DOC, XLS, PPT), OpenOffice (sxw/odt), StarOffice (sdw), DVI, MAN, MP3, OGG, EXIF, JPEG, GIF, ZIP a další. Dále umí číst přímo z API rozhraní mailových klientů KMail, Evolution a Thunderbird. Navíc se umí napojit na kdovíjaké D-BUSy a hlídat změny v souborech.
Tracker má dobrý UNIXový návrh (démon, utility, GUI, knihovna) a má opravdu fajnový footprint (autor uvádí 4 MB v klidovém stavu). Zdrojáky jsou v dobrém stavu, program prodělává bouřlivý vývoj, ale směřuje to už od začátku správně. Všechny potřebné knihovny jsou součástí balíku, žádné velké závislosti se nekonají.
Také proto, že pokud si s nějakým formátem Tracker neví rady, pustí na to utilitu, která to odedře za něj. A to je myslím správné – tak například PDFka zpracovává pdftotext, na DOCy zase antiword. Je zbytečné snažit se naprogramovat tucty modulů, které by to stejnak asi nedělaly tak dobře, jako ten nejlepší dostupný program v Linuxu. Program samotný umí číst jen OpenOffice.org soubory, HTML/XML a metainformace z datových souborů (MP3, videa, obrázky).
Indexace probíhá přímo bleskově, vyhledávání je okamžité. K dispozici je také nějaké GUI, to jsem ale neinstaloval (stačí mi řádkový klient, jinak kdyby vás to zajímalo, je postaven na GNOME knihovnách). A existuje i jakási nadstavba pro Nautilus. Ten také nepoužívám, ale vsadím pět dukátů, že je skvělá. Stejně jako nadstavba pro Deskbar.
Co se týče kvality samotného indexátoru, musím jej pochválit. Přítomna je „lámací“ knihovna doktora Portera (stemming algoritmy pro mnoho jazyků – češtinu nehledejte, je to nestemovatelný jazyk). Stoplisty program zná taky, lze také nakonfigurovat omezení pro délku slov. Program předpokládá kódování UTF-8 u textových souborů, co se týče dokumentů (DOC, ODT), tak tam je za převedení do UTF-8 textu zodpovědný delegovaný program.
Všechno ten malý ďáblík strká do ~/.Tracker, používá jakousi kombinaci binárních souborů a SQLite3 databáze. Celý index měl na mém stroji necelých 20 MB. Ve stejném adresáři najdete konfigurační soubor, ve kterém specifikujete jazyk, další adresáře pro indexaci, spojení s poštovními klienty a mnoho jiných užitečných parametrů.
Tracker nabízí velmi zajímavou vlastnost – tagování. Pomocí příkazu tracker-tag můžete přidávat souborům metainformace, které vám pak pomohou data zařadit.
Není všechno zlato
Jako hlavní nevýhodu vidím to, že program ignoruje přípony, které nezná. Například historie klienta PSI mají připonu .history, budu se muset podívat na způsob, jakým donutit Tracker, aby četl i soubory tohoto typu (nejlépe jen v daném adresáři – zde v ~/.psi/*/history).
Projekt je zatím řekněme v beta stádiu, ale je dobře použitelný. Při prvotní indexaci jsem zaznamenal asi v polovině citelné zpomalení při indexaci mých zdrojových souborů (je jich hodně), takže jsem démona zastavil, poté znovu spustil. Zřejmě se z toho otřepal a dokončil indexaci ve standardní rychlosti (disk skoro nestíhá). Za 10 minut nebylo co řešit (mám asi 2 GB „smysluplných“ dat – dokumenty, zdrojáky atd).
Jistě, není to asi tak pohodlné, GUI mi nezobrazí náhledy na dokumenty nebo snad kontexty textu, ale kdoví, kam se tenhle projekt za rok posune… Šuškanda – bude v GNOME 2.18.
Tento zápisek vznikl převodem z mého starého blogu. Ne všechny texty byly takto převedeny, kompletní archiv již není k dispozici.
Beagle moc, locate málo?
April 22, 2010