Portál AbcLinuxu, 30. dubna 2024 04:19

Žirafa - quick'n'dirty vyhledávač

9.8.2007 08:55 | Přečteno: 1308× | Dev/Tech/Gnu | Výběrový blog

Když jsem bydlel na koleji, napsal jsem vyhledávač, který běžel na kolejním serveru a indexoval obsah FTP serverů okolo (rozumněj, semestrálky a tak :-). Byla to Java+Tomcat+Lucene a s oblibou jsem ho používal na vyhledávání svých vlastních mptrojek.

Už na koleji nebydlím a svou Lucernu (tak se to jmenovalo) používat nechci. Navíc mám mptrojky uložené na externím USB disku a nechci mást svého Trackera tím, že disk občas odpojím. Taky mám hrůzu z všelijakých media library přibalených k přehrávačům (oblíbený XMMS nic takového nemá, proto je taky oblíbený). Navíc chci indexovat i svou sbírku e-booků, i když jen názvy souborů. Locate se taky nehodí.

Tak jsem si včera během tří hodin napsal v Pythonu vyhledávač Giraffe. Je to poctivý vyhledávač na bázi invertovaných seznamů, žádný humus jako grep se složitostí O(n). Mám k tomu i grafické rozhraní ala GTK. Zajímalo by mě, jak dlouho bych to psal v C++, v Pythonu to byla vážně radost.

Funguje to tak, že se na začátku vytvoří index pro vybrané adresáře. Index se uloží a pak prohledává buď CLI utilitkou nebo grafickým klikátkem (search as you type).

Udělal jsem k tomu i logo a stránku se screenshotem, návodem a stažením. Má to 260 řádek, licence je pochopitelně Public Domain.

       

Hodnocení: 100 %

        špatnédobré        

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

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

9.8.2007 09:17 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Odpovědět | Sbalit | Link | Blokovat | Admin
A proč si vlastně Pythonisté z Ruby ještě nenaportovali Ferret? V případě větších objemů dat by se asi stěží hledalo něco rychlejšího a určitě je to lepší než znovyvynalézat kolo (nebo GCJovat Lucene, brrr...).
Jak moc jsou ábíčkáři inteligentní? ;-)
9.8.2007 09:37 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Lucene je super, PyLucene je fakt trochu přes ruku. O Ferret slyším poprvé, ale je to sympatické.

Někdo by to přepsat mohl, ale já to nebudu. Jinak já jsem Pythonista z donucení, Ruby je krásnější :-). Síla obou jazyků je ale stejná. Jako Java vs C#.
xpj avatar 9.8.2007 09:25 xpj | skóre: 22 | blog: Malé linuxové radosti... a strasti | Řevnice
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Odpovědět | Sbalit | Link | Blokovat | Admin

žádný humus jako grep se složitostí O(n).

To ale není zas tak hrozné, ne?

no!future - be happy ... Malé linuxové radosti... a strasti a všechno ostatní.
9.8.2007 09:32 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Pro desetitisíce souborů (můj případ) nebo miliony (ty koleje) to jde. Ale když to trvá půl sekundy, tak už to na desktopové aplikaci může být nedostatek. Google pochopitelně O(n) být nemůže :-)

Já navíc švindluju. Při startu aplikace se celý index načte do paměti, ale dotazy jsou v podstatě O(1). I když je to závislé na tom, jak je které klíčové slovo populární.
9.8.2007 09:29 tired joe | skóre: 17 | blog: rootlet | Trenčín/Bratislava
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Odpovědět | Sbalit | Link | Blokovat | Admin
Páči sa mi logo/ikona.
Človek sa riadi zdravým rozumom, až keď už nezostáva žiadne iné riešenie.
9.8.2007 09:34 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Ikona mate, skoro jsem se těšil, že to bude v Haskellu, jediném pořádném funkcionálním jazyce :-P
10.8.2007 10:57 thingie
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
No taky mi to přišlo jako nějaká lambdažirafa.
9.8.2007 09:37 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Díky, já žeru Inkscape a občas v něm něco splácám.
brk avatar 10.8.2007 07:13 brk | skóre: 29 | blog: broukoviny
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Tak se mi líbí a obzvlášť u něčeho, co mělo vzniknout za tři hodinky. Působí to dojmem, že se tomu autor věnoval hodně dlouho, když měl čas i na takové detaily.
USE="-qt -kde"
10.8.2007 08:17 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
To logo jsem večer ještě předělával, původní verze jsou v tarballu. Ta první verze je trochu humpolácká.

Když je inspirace, tak se to v Inkscape vyfikne za deset minut. Navíc je to otázka priorit - loga prostě kreslím rád.
9.8.2007 09:32 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Odpovědět | Sbalit | Link | Blokovat | Admin
Je to poctivý vyhledávač na bázi invertovaných seznamů, žádný humus jako grep se složitostí O(n).
LOL. No ono taky ten hloupý grep může mít paměťovou složitost třeba O(1). Zatímco tvoje asociativní pole kdóvijakou. Nehledě na to, že kdyby to někdo používal tak, že by to spustil pro každé vyhledávání (a pak ukončil), tak jsme vzhledem ke způsobu uložení indexu zpátky na O(n) :-)

Rozdíl o proti tomu zmíněnému C je v tom, ža tam bys moh implementovat aspoň paměťově úsporný prefixový strom, v pythonu by to možná věci jenom zhoršilo :-)
9.8.2007 09:37 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Hmm, a co sufixový strom, kdyby chtěl hledat opravdu pořádně? ;-)
9.8.2007 09:44 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač celých slov
Znamená to, že třeba google nehledá opravdu pořádně?
9.8.2007 12:52 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač celých slov
Nevíte někdo, co jsem tím chtěl říct?
9.8.2007 13:03 thingie
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač celých slov
Víme. Chceš číslo účtu?
9.8.2007 16:14 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač celých slov
Ani ne. Informace o tom, že to víš ty, mi stačí k tomu, abych to věděl i já.
9.8.2007 09:44 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Ale no tak, neber mě za slovo, s O-notací se dá čarovat všelijak. A že asociativní pole může mít k O(1) pěkně daleko? Who cares? Kdybych to implementoval hrubou silou, třeba by to bylo stejně rychlé, ale já tam mám invertovaný seznam pro radost :-)
9.8.2007 09:57 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Odpovědět | Sbalit | Link | Blokovat | Admin
pekny.. dobry projekt, libi se mi. pro me sice nic moc pouzitelny (davam prednost find), ale vazne pekne..
9.8.2007 10:01 thingie
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Proč musí být každý kousek kódu hned *projekt*?
9.8.2007 10:15 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
proc musi byt na abicku tolik zbytecnych komentaru?
9.8.2007 10:16 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Protože je píšeš.
9.8.2007 10:18 tired joe | skóre: 17 | blog: rootlet | Trenčín/Bratislava
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Ignor, Ignor, toto bolo úplne zbytočné :D
Človek sa riadi zdravým rozumom, až keď už nezostáva žiadne iné riešenie.
9.8.2007 12:02 thingie
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Ale pravdivé.
9.8.2007 10:06 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Find nesnáším. Nesnáším totiž zbytečně zaplácnutou cache :-)
9.8.2007 11:16 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Odpovědět | Sbalit | Link | Blokovat | Admin
Jen bych zareagoval, pokud bys v C++ opravdu uměl, tak bys to nepsal o moc déle, než v Pythonu.
http://ponkrac.net
9.8.2007 11:46 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
No, člověk, co v C++ opravdu pravidelně dělá by takovouhle tic-tac-tou blbost jistě napsal taky rychle. Nicméně na takovéhle prototypování jsou skriptovací jazyky určitě lepší. Nulový čas obrátky se prostě hodí, nepřemýšlet tolik nad typama se taky hodí, neřešit hlavičkové soubory se taky hodí. Takový slovník z Pythonu je něco dočista jiného než obdoba v STL.
9.8.2007 20:09 Jan Kundrát (jkt) | skóre: 27 | blog: jkt | Praha - Bohnice
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Odpovědět | Sbalit | Link | Blokovat | Admin
kdyz uz to pises v pythonu, proc znova reimplementujes os.path.walk()?
Blésmrt
9.8.2007 20:58 paskma | skóre: 13 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Žirafa - quick'n'dirty vyhledávač
Bateries included :-). Nevěděl jsem o tom a navíc jsem si to poprvé v životě rád napsal jako generátor.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.