Obsah
Svět je v současnosti zahlcován velkým množstvím informací (tiskové a jiné zprávy, výpisy, korespondence, příspěvky elektronických konferencí, odborné články a v poslední době už i celé knihy), které je nutno zpracovat a uložit k pozdějšímu použití. Toto zpracování a uložení se naštěstí již převážně provádí v elektronické podobě. Pod pojmem pozdějšího použití se rozumí vyhledávání důležitých informací v těchto archívech.
Naneštěstí neexistuje jednotný formát těchto dat, natož pak jednotné zpracování, archivování a nástroje pro vyhledávání. Existuje nepřeberné množství způsobů (formátů), jak tyto data uložit a další nové formáty vznikají. Tím se hledaní v textech stává komplikovanější protože na každý formát dat existují jiné nástroje. Některé formáty dokonce žádný rozumný způsob prohledávání neumožňují.
Mezi nejčastěji používané zdroje textových dat, se kterými se běžný uživatel počítače setká patří následující.
Ty jsou uloženy v poštovních klientech (Microsoft OutLook, PegasusMail, Pine, Lotus Notes, ). Data v těchto aplikacích jsou ukládána ve vlastním formátu, který je pro další využití ostatními aplikacemi většinou naprosto nevhodný. Naštěstí většina těchto poštovních klientů umožňuje exportovat data do čistého textu, se kterým se pracuje podstatně lépe.
K většině níže uvedeným formátům existují aplikace pro vyhledávání. Téměř vždy to jsou aplikace ve kterých zmíněné typy dokumentů vznikají. Tyto nástroje jsou omezené pouze na daný formát.
Existuje i několik výjimek, například Microsoft Index Server (součást Internet Information Server a Windows NT Serveru, sloužící pro indexaci a plnohodnotné vyhledávání dokumentů přístupných přes WWW) pracuje s formáty txt, html a s dokumenty kancelářského balíku MS Office.
Čistý text (.txt) - platformě nezávislý, snadno přenositelný a nestrukturovaný (moc se nepoužívá).
Elektronická kniha (.lit) neboli e-Book prohližitelná pomocí Microsoft Reader (ovšem obdobné formáty vyvíjí i jiné firmy, jako například Adobe).
Dokumenty Microsoft Office. (.doc). Velmi nepřenositelné, dokonce se jedná o formát nekompatibilní mezi jednotlivými verzemi Office. Bohužel je velmi oblíben i když podstatně lepší vlastnosti (co do zpracování a přenositelnosti) má Rich Text Format (.rtf). Tento formát se poměrně dosti rozšířil a většina textových procesorů s tímto formátem dokáže pracovat (importovat a exportovat data).
Portable Document Format (.pdf) - platformě nezávislý formát firmy Adobe, který lze prohlížet například pomocí Adobe Acrobat Reader.
Poscript (.ps) - textový soubor popisující vzhled tištěné stránky včetně textu a obrázků. Je podporován nejen výrobci softwaru, ale i hardwaru. Tyto soubory lze v prostředí Windows prohlížet například pomocí Ghost View.
Webové stránky (.htm, .html, .shtml, ) jsou psány jazykem HTML (Hypertext Markup Language). Téměř každý operační systém obsahuje prohlížeč tohoto formátu.
XML (.xml) - univerzální a otevřený formát (Extensible Markup Language) pro výměnu dat. V poslední době velmi oblíbený.
Velké množství textů je uloženo v databázích. Je to jeden z nejlepších způsobů pro uložení dat. Nabízí poměrně snadnou správu dat, umožňuje vyhledávání pomocí SQL příkazů,
V současné době většina databázových serverů obsahuje buď speciální rozšíření pro ukládání textů (například u serveru Oracle bylo dříve rozšíření ConText Cartridge, nyní Oracle8i interMedia Text) případně alespoň nabízí operátory umožňující rozumně vyhledávat (například v Microsoft SQL Serveru jsou operátory CONTAINS, CONTAINSTABLE , FREETEXT, FREETEXTTABLE).
Ovšem nejvíce textů se nachází na Internetu v podobě webových stránek. I v tomto případě existuje způsob pro vyhledávání. Jsou jím různé webové služby (katalogové a fulltextové vyhledávače, hledání v konferencích, ).
Bohužel v současné době neexistuje žádný způsob, jak v těchto uvedených zdrojích informací hromadně vyhledávat. Neexistuje dokonce ani definice jazyka, který by byl jednotný pro specifikaci dotazu. Každá aplikace si proto vytváří vlastní jazyk pro popsání hledaných termů, vztahů mezi nimi,
V databázových systémech se používá jazyk SQL (Structured Query Language) rozšířený o operátory pro fulltextové hledání, webové vyhledávače používají syntaxi boolské algebry rozšířenou o vlastní operátory pro hledání v různých sekcích, doménách,
Uživatelé se tak k mnohým důležitým informacím ani nedostanou, protože nejsou schopní (případně jsou již znechuceni) využít a prohledat všechny zdroje dat. A nejsou ani schopni plně využít možnosti, které jednotlivé nástroje nabízí. Většinou se zaměří na několik málo nástrojů., které si více osvojí a tyto používají.
Cílem diplomové práce je vytvořit program, usnadňující vyhledávání informací v dokumentech, jež jsou uloženy na rozličných místech a v různých formátech. Jedná se tedy o program podobný webovému metavyhledávači (viz oddíl nazvaný „Metavyhledávače“) nebo spíše klientskému vyhledávači (viz oddíl nazvaný „Klientské vyhledávače“), ovšem s tím rozdílem, že nebude oslovovat pouze webové vyhledávací stroje, ale i další libovolné zdroje dat (Oracle a jiné databáze, soubory na lokálním disku, ).
Množina zdrojů, které se budou pro vyhledávání používat, půjde snadno rozšířit o další a to bez nutnosti rekompilace aplikace. Navíc toto rozšíření zdrojů bude umožněno komukoliv - bude implementováno v nezávislém modulu, který bude sloužit pro komunikaci mezi příslušným fyzickým serverem a aplikací.
Hlavní náplní je tedy navrhnout a implementovat rozhraní mezi aplikací a vlastním DIS serverem (který bude oslovován) tak, aby umožnilo uživateli:
Obsah
Vyhledávání informací na Internetu se dá rozdělit do několika kategorií podle použitých nástrojů:
Katalogové vyhledávače jsou postaveny na velké databázi stránek, která má stromovou strukturu. Jednotlivé odkazy jsou roztříděny do několika (řádově deseti) základních kategorií, které se dále dělí na podkategorie a tak dále.
Uživatel může tyto služby využívat dvojím způsobem:
Mezi nejznámější katalogy u nás patří:
Seznam (http://www.seznam.cz) - první katalog u nás, nejznámější a nejnavštěvovanější
Atlas (http://www.atlas.cz)
Centrum (http://www.centrum.cz)
Quick (http://search.quick.cz)
RedBox (http://www.redbox.cz)
V zahraničí jsou asi nejznámější:
DMOZ (http://dmoz.org) - Open Directory Project
Yahoo (http://www.yahoo.com)
Excite (http://www.excite.com)
Lycos (http://dir.lycos.com)
Google (http://directory.google.com)
Na rozdíl od katalogových vyhledávačů se stránky v jejich databázích nedají sekvenčně procházet. Umožňují pouze nalézt relevantní stránky odpovídající zadanému dotazu.
Většina vyhledávačů tohoto typu používá „Boolovský model“. Jedná se o jeden z nejstarších modelů DIS, jehož základy byly navrženy již v 50-tých letech. Každý dokument modelu obsahuje množinu slov a vyhledávání je založeno na vyhodnocování boolovských výrazů (AND, OR, NOT) jak je uvedeno v 1 a 2.
Například dotazem Z AND (X OR Y) se naleznou dokumenty obsahující slovo Z a alespoň jedno ze slov X nebo Y.
Tento model lze dále rozšířit o operátory vzájemné polohy termů v dokumentu (například term X musí být maximálně ve vzdálenosti 10 slov od termu Y, případně ve stejném odstavci, stránce, kapitole, ).
Hlavní nevýhodou boolovského modelu je nemožnost ohodnotit slova (určit, která slova jsou důležitá a která nikoliv. Typicky běžná slova, jako například „který“, „kolem“ a podobně, jsou v článku o JavaScriptu podstatně méně důležitá než „toString“, „getDate“, ) a to jak v dotazu, tak v samotném dokumentu, což má několik špatných důsledků:
Nelze ohodnotit nalezené záznamy dle relevance (všechny dokumenty, které odpovídají dotazu jsou stejně dobré)
Termy v dotazu i dokumentu jsou chápány jako stejně důležité
Neintuitivní výsledky (T1 OR T2 OR OR Tn - vrátí záznamy se všemi Ti ale i takové, které obsahují jediné Ti. T1 AND T2 AND AND Tn - ve výsledku nebudou záznamy neobsahující jediný Ti)
Fulltextové vyhledávací stroje se skládají z několika částí:
Jinak zvaní též „spiders“, „worms“ či „web crawlers“ jsou programy, které procházejí web a indexují nalezené stránky. Pod pojmem Indexace se rozumí zpracování obsahu stránky - tedy zapsání důležitých klíčových slov stránky (a dalších informací) do databáze.
Kromě hledání nových stránek mají za úkol prověřovat aktuálnost databáze. To jest kontrolují, zda v ní obsažené dokumenty, jsou stále ještě přístupné a zda jejich obsah odpovídá uloženým informacím. Během jednoho dne stihnou tyto programy navštívit několik milionů stránek.
Některé fulltextové vyhledávače umožňují návštěvníkům vložit vlastní stránky do databáze (jiné toto neumožňují a spoléhají pouze na své roboty). Samozřejmě, že se při přijmutí požadavku neprovede zápis přímo do databáze, ale uvedená adresa se podstrčí robotovi, který ji zpracuje jako ostatní stránky.
Roboti kromě zapsání informací o stránce zjistí také adresy, na které se odkazuje a vloží je do fronty odkazů, které později zpracuje (navštíví a naindexuje). Je tedy zřejmé, že čím více odkazů na stránku ukazuje, tím dříve bude nalezena a zařazena do indexu. Pokud na stránku neexistuje žádný odkaz, nebude nalezena nikdy a pokud nebude zařazena do databáze ručně, může se stát, že nebude nikdy naindexována. Díky tomu, že se indexování provádí automaticky, existují stránky, které nemohou být nikdy zařazeny do databáze. Jsou to zejména:
Obsahuje informace o naindexovaných stránkách. Kromě seznamu klíčových slov (termů), které stránka obsahuje, se můžou ukládat i jiné informace: pořadí slov, zda slova tvoří nějakou známou frázi, datum modifikace stránky, linky z této stránky a na tuto stránku, informace o serveru, kde se stránka nachází, zda je mládeži přístupná atd. Záleží na implementaci daného systému. Čím více informací se ukládá, tím více možností má uživatel při zadávání dotazu a také při prohlížení výsledků.
Základní možnosti, které fulltextové vyhledávače podporují (viz 4 a 5) jsou:
Vyhledávání frází (slova, která se v hledaném dokumentu musí vyskytovat u sebe). Při zadávání se používají uvozovky.
Podpora základních operátorů: AND, OR, NOT, NEAR (spojuje slova, která by se v dokumentu měla vyskytovat blízko sebe). Některé stroje tyto operátory zjednodušují na znaménkový prefix:
Většinou je možné místo těchto operátorů psát jejich zkratky ( &, |, !, ~).Podpora žolíků „*“ slouží pro nahrazení libovolného počtu písmen (někdy je z důvodu optimalizace umožněno použít žolíka pouze v případě, že je zadán jistý počet písmen. Navíc je někdy povoleno používat žolíky pouze jednostranně, to jest že představují jen libovolnou koncovku, případně předponu).
Omezení počtu výsledků z jednoho serveru. Stránky na jednom serveru mají většinou velmi podobný obsah (zaměření). Takto lze získat více relevantních stránek z více serverů (z každého serveru se vybere pouze jedna (nebo několik málo) nejrelevantnější stránka).
Slova v různých sekcích stránky (text odkazu, název obrázku, odkaz, adresa, název).
Obsahuje-li hledané termy v názvu stránky (HTML tag <TITLE>).
Počet nalezených slov a jejich výskytů v textu (čím více z hledaných slov dokument obsahuje, tím má lepší ohodnocení). Proto je rozumné zadávat v dotazu hodně podobných termů.
Obsahuje-li více slov, které jsou označeny znaménkem „+“ v dotazu.
Obsahuje-li slova, která byla nalezena na relativně málo jiných stránkách.
Zda dokument obsahuje některá slova jako frázi, ač tato slova nebyla v dotazu uvedena v uvozovkách (například často hledané spojení typu „Bill Gates“ a podobně).
Kompas (http://kompas.seznam.cz) - Součást nejznámějšího českého katalogu Seznam.
Megatext (http://www.megatext.cz) - Chlubí se, že patří mezi největší a technologicky nejpokročilejší fulltextové vyhledávače u nás. A to zejména díky tomu, že se jako jediný z velkých českých vyhledávačů dokáže plně vypořádat s klíčovými problémy složité české gramatiky (viz 10). Umí vyhledávat česká ohýbaná slova ve všech jejich morfologických tvarech. Má pro řešení tohoto problému k dispozici rozsáhlý slovník 50-ti tisíc nejfrekventovanějších českých slov, s jehož pomocí dokáže hledané výrazy spolehlivě identifikovat bez ohledu na to, v jakém pádu, čísle nebo slovesném čase se daný termín na stránce vyskytuje.
Atlas (http://hledej.atlas.cz)
Redbox (http://www.redbox.cz)
Altavista (http://www.altavista.com) - Jeden z prvních a nejlepších fulltextů vůbec. Bohužel v poslední době upadá a je pomalý. Na druhou stranu obsahuje několik zajímavých služeb (hledání obrázků, hudby a multimédií, překlad do jiných jazyků, čistě textová verze, )
Google (http://www.google.com) - V poslední době asi nejpoužívanější (obsahuje zajímavé vylepšení prohlížeče - přídavná lišta pro rychlé vyhledávání)
Excite (http://www.excite.com)
All The Web (http://www.alltheweb.com)
MSN (http://www.msn.com)
Metavyhledávač je vyhledávací stroj, který využívá ostatní vyhledávače. Po zadání dotazu jej předá vyhledávačům (většinou jich bývá několik), které jej paralelně vyhodnocují, počká si na výsledky a zpracuje je (setřídí, odstraní duplicitní odkazy, zobrazí výsledky v jednotném formátu, ).
Bohužel ne každý vyhledávač na webu, který o sobě tvrdí že je metavyhledávač, jím skutečně je. Většinou se jedná jen o stránku umožňující zadat dotaz na několik serverů, ale výsledky jednotlivých vyhledávačů se zobrazí na samostatných stránkách, takže základní a nejtěžší funkce (zpracování a sjednocení výsledků z různých zdrojů) není u nich implementována.
Mezi základní výhody těchto systémů patří množství naindexovaných stránek (je to podstatně více než mají normální vyhledávače), uživatelská přívětivost (jednotný interface), rychlost (paralelní zpracování).
U nás existuje zatím jediný metavyhledávač:
Archon (http://www.archon.cz)
Search.com (http://www.search.com)
Apollo 7 (http://www.apollo7.de)
Meta Crawler (http://www.metacrawler.com)
Monster Crawler (http://www.monstercrawler.com)
Search Caddy (http://www.searchcaddy.com)
Další možností, jak hledat informace na Internetu, jsou takzvané klientské vyhledávače. Jedná se o aplikace nainstalované na lokálním disku, které pro vlastní vyhledávání používají několik (až několik desítek) různých katalogových, fulltextových a jiných vyhledávačů. Jde tedy vlastně o metavyhledávače, které mají podobu klasické aplikace.
Výhod těchto systémů je několik:
Uživatelské prostředí - jelikož se jedná o aplikaci a ne o webovou stránku, může se spousta rysů velmi snadno nastavit a toto nastavení uložit (což ne každý vyhledávač podporuje).
Podstatně rychlejší start - aplikace je nainstalována na lokálním disku a na rozdíl od webového vyhledávače není třeba před vlastním vyhledáváním nic stahovat.
Většina těchto programů uchovává historii vyhledávání včetně výsledků (seznamu nalezených dokumentů). Uživatel se tak může snadno vrátit k předchozím dotazům a tyto dotazy dále „ladit“.
Další služby - generování reportů, možnost automatického skenování (hledání změn, novinek, dalších dokumentů, )
BullsEye (http://www.intelliseek.com/prod/bullseye/bullseye.htm)
Copernic (http://www.copernic.com/)
Babylon (http://www.babylon.com/)
Obsah
Aplikace, která je součástí diplomové práce, se nejvíce podobá klientským vyhledávačům. V současné době je jich několik na trhu. Převážně se jedná o sharewarové produkty, s omezenou funkčností (jsou zakázané pokročilejší operace, nelze použít všechny vyhledávací služby, ale pouze některé, ).
Níže následuje bližší popis několika aplikací (viz 3), kterými byla ovlivněna tvorba programu DISClient. Existuje i spousta dalších produktů (Webferret, Search+, ). Ty však nedosahují takových kvalit a možností, proto zde nebudou uvedeny.
Copernic 2001 je klasický desktopový vyhledávač, jenž pro vlastní vyhledávání využívá asi 80 webových vyhledávacích strojů. Aktuálnost je zajišťována automatickým updatem nastavení vyhledávacích serverů při startu aplikace či vyhledávání. Uživatel se tak nemusí o nic starat (případně může to samé provést příkazem z menu).
Vzhled aplikace (Obrázek 4.1.) je víceméně standardní - v levé části seznam kategorií, vpravo seznam dotazů, pod ním přehled nalezených dokumentů k aktuálnímu dotazu a v levém dolním rohu malý náhled vybraného dokumentu.
Při práci je nejdříve třeba vybrat oblast, ve které se bude hledat. K výběru nabízí aplikace více než 40 kategorií. V neregistrované verzi je k dispozici pouze prvních 6 - web, diskusní fóra, emailové adresy, nákup knih, hardwaru a softwaru. Po registraci se nabídka rozšíří o mnoho dalších (aukce, zdraví, humor, obrázky, filmy, MP3, recepty, věda, cestování, sport a podobně), jiné naleznete na stránkách výrobce (http://www.copernic.com/downloads/categories/).
Po zvolení kategorie je nutno zadat vlastní dotaz. To spočívá v zadání několika termů a zvolení vztahu mezi těmito termy a hledanými dokumenty: zda dokumenty musí obsahovat všechna slova, zda postačí alespoň jedno nebo zda se jedná o přesnou frázi. Zajímavou volbou je mód „Odpověď na otázku“, kdy se místo klíčových slov napíše otázka celou větou a program už si to sám převede (například „Where was Albert Einstein born?“). Zde je nutno podotknout, že celý program je anglicky, používá zahraniční vyhledávače a tedy je nutné tuto otázku položit v angličtině. Také lze upravit seznam vyhledávačů, které se pro vlastní hledání použijí.
Plná verze programu umožňuje automatické odstranění nedosažitelných dokumentů. Vyhledávání pak sice trvá déle (kontroluje se existence nalezených dokumentů), ale uživatel má jistotu, že nalezené dokumenty jsou dostupné.
Posledním krokem editace dotazu je zadání maximálního počtu výsledků od jednotlivých vyhledávacích strojů a počet výsledků celkem.
Po potvrzení se program pustí do vlastního vyhledávání. Průběh se zobrazuje v pomocném dialogu, kde se také vypisuje kolik dokumentů bylo nalezeno jednotlivými kontaktovanými vyhledávači. Výsledky (odpovídající dokumenty) se poté zobrazí v přehledném seznamu.
Nalezené dokumenty lze samozřejmě prohlížet - pro zobrazení lze využít jakýkoliv nainstalovaný prohlížeč a nebo interní prohlížeč této aplikace, který dovede navíc ve zobrazovaném dokumentu zvýraznit hledaná slova, snadno přecházet mezi jednotlivými dokumenty a obsahuje i příjemné klávesové zkratky. Ve stejném prohlížeči lze také zobrazit seznam nalezených dokumentů, což se velmi podobá prohlížení výsledků na běžném webovém fulltextu. Vybrané dokumenty lze kromě prohlížení také uložit na disk (včetně obrázků, či bez nich).
Zajímavá je také možnost zobrazit si dokument v jiném jazyce (stačí zadat z jakého do jakého jazyka se má přeložit). K dispozici je angličtina, francouzština, němčina, italština, japonština, portugalština a španělština.
Ve fázi specifikace dotazu sice nelze odfiltrovat nefunkční odkazy (tedy ve freewarové verzi programu), ale po prohledání již toto naštěstí provést lze.
Je-li navrácených dokumentů přespříliš, lze je filtrovat. K tomu slouží příkaz Refine, který zkontroluje, zda vybrané dokumenty opravdu obsahují uživatelem zadaná slova (předtím se automaticky stáhnou na pevný disk). Přitom je možné poupravit slova, která má dokument obsahovat (k dispozici jsou spojky AND, OR, EXCEPT, NOT, NEAR) a tedy dotaz takto doladit.
Přehled nalezených dokumentů odpovídající dotazu se dá vyexportovat v několika různých formátech: čistý text, HTML, CSV (Comma Separated Value - atributy jsou odděleny čárkami - formát podporovaný třeba Excelem), DBF a XML.
Výsledky jednotlivých vyhledávání se ukládají na disk, do speciálních adresářů, které lze snadno editovat. Díky tomu se k nim může uživatel kdykoliv později vrátit a dále s nimi pracovat: pozměnit dotaz, znovu vyhledat (přidají se pouze nově nalezené dokumenty), duplikovat a podobně.
Aplikace lze vizuálně upravovat - od zobrazování/schovávání jednotlivých prvků, přes sloupečky seznamů, nastavení výchozích voleb při editaci dotazu až po vlastní skiny.
Při instalaci (případně později v nastavení) tohoto produktu je možno zabudovat několik rozšíření do Internet Exploreru: Přidání odkazu do nástrojové lišty a menu, nové položky do kontextového menu prohlížeče, nahrazení standardního nástroje pro vyhledávání, přidání volby překladu stránek.
Ačkoliv je freewarový produkt odlehčenou (chybí mu několik příjemných funkcí) verzí placeného produktu, je plně funkční. Placená verze „Copernic Plus“ obsahuje navíc přístup k 1000 vyhledávacích strojů v 93 kategoriích a neobsahuje reklamní proužky. V ještě dražší verzi „Copernic Pro“ je k dispozici několik nových funkcí (automatické odstraňování nefunkčních odkazů, vyhledávácí agenti, e-mailové upozornění na nové dokumenty odpovídající dotazu a mnohé další).
Klady:
Zápory:
Tabulka 4.1. Informace o aplikaci Copernic 2001
| Název a verze | Copernic 2001 Basic, verze 5.01 |
| Adresa | http://www.copernic.com |
| Výrobce | Copernic Technologies Inc. |
| Typ | Freeware |
| Cena | Freewarová verze - $0, Copernic PLUS - $39.95, Copernic PRO - $79.95 |
| Požadavky | 486DX 66 MHz (a vyšší), 15 MB RAM, 10 MB volného místa na disku, operační systém Microsoft Windows 95/98/Me/NT4/2000/XP, prohlížeč Netscape 3 (a novější) nebo Internet Explorer 3 (a novější). |
Bulls Eye 2 je přímo „Desktopový vyhledávací portál“. Hlavní okno je rozděleno na několik částí (Obrázek 4.2.): Seznam výsledků, náhled aktuálně vybraného dokumentu v tomto seznamu a přehled kategorií, ve kterých je možno vyhledávat - nachází se na levé straně a obsahuje jednotlivé typy vyhledávání: Web, News, Jobs, Books, Software, Health a mnoho dalších.
Po vybrání kategorie při vytváření nového dotazu je třeba zadat hledané termy (k dispozici je přehled dříve zadávaných termů). V pokročilém módu lze využít rozšířené nastavení, kde lze vytvořit podstatně komplikovanější dotazy za pomoci operátorů AND, OR, NOT, NEAR. Je možné si také prohlédnout a případně pozměnit seznam vyhledávacích webových serverů, které se budou používat a nastavit další parametry (kolik maximálně výsledků získat od každého stroje, podle čeho mají být výsledky setříděny).
Podle vybrané kategorie lze blíže specifikovat kde se má hledat (například při vyhledávání knih lze určit, zda se termy týkají názvu, autora, ISBN, zda se hledá knížka v obchodech nebo v knihovnách nebo zda chce uživatel najít volně stažitelnou knihu, ).
Posledním krokem je volba způsobu analýzy dokumentů - žádný, odstraňování neplatných odkazů nebo kontrola, zda dokument opravdu odpovídá zadanému dotazu (v tom případě je samozřejmě nutné dokument nejdříve stáhnout na lokální disk a prozkoumat, což se provede automaticky).
Po potvrzení dotazu začne probíhat vlastní vyhledávání a v seznamu nalezených dokumentů se začnou zobrazovat první výsledky (časem se dotáhnou a správně zařadí zbývající). V seznamu se uvádí základní informace o nalezených dokumentech (relevantnost, adresa, název stránky, jméno vyhledávače, který ji nalezl, ) po přepnutí do detailního módu se zobrazí další informace (datum, velikost a stav dokumentu). Po odkliknutí dokumentu se tento načte a zobrazí pod seznamem s výsledky. Lze nastavit aby rámec s dokumentem případně se seznamem byl přes celé okno nebo aby byly vidět výsledky a dokument zároveň.
Další možností je otevírat výsledky v asociovaném webovém prohlížeči. Samozřejmostí je zvýraznění hledaných slov v prohlíženém dokumentu a tlačítko pro přidání odkazu do záložek.
Za zmínku stojí také informační přehled vyhledávačů, kam se dotaz posílal, ve kterém je uvedeno které servery nic nevyhledaly a hlavně proč tomu tak je (nic nenašly, nepodařilo se na ně připojit, jsou mimo provoz, ).
Z vybraných dokumentů si může uživatel vygenerovat report. Při jeho tvorbě je na výběr několik výsledných formátů (html, čistý text, ). Výsledek se buď uloží na disk, nebo pošle elektronickou poštou.
V levé části okna, kde se vybírá kategorie vyhledávání, se nalézá ještě několik položek. V jedné z nich je seznam právě otevřených projektů (maximálně tři), v další je položka obsahující záložky (a to od obou nainstalovaných internetových prohlížečů - tedy jak Netscape tak MSIE), uložené projekty a již výše zmíněné reporty a historie dotazů.
Další záložka - Track - slouží k automatickému vyhledávání nových dokumentů, které odpovídají zadanému dotazu. Toto je už ale bohužel rozšíření placené verze této aplikace (BullsEye 2 Pro). Odlehčená verze, která je zdarma, zobrazuje reklamní bannery a až na několik náročnějších rozšíření je plně funkční.
Instalace BullsEye 2 přidá několik „zástupců“ do operačního systému pro snazší a rychlejší spouštění aplikace. Konkrétně do nástrojové oblasti hlavní lišty (tool tray), do panelu nástrojů nainstalovaných prohlížečů (MSIE, Netscape) a do Start menu (Start/Search).
Jednou za čas (řádově několik dní) se aplikace zeptá uživatele, zda nemá zkontrolovat výskyt nových aktualizací a případně nabídne jejich stažení a instalaci.
Klady:
Zápory:
Tabulka 4.2. Informace o aplikaci Bulls Eye 2
| Název a verze | Bulls Eye 2, verze 2.5 |
| Adresa | http://www.intelliseek.com/prod/bullseye/bullseye.htm |
| Výrobce | IntelliSeek Inc. |
| Typ | Bulls Eye 2 - Freeware, Bulls Eye 3 Pro - Free Trial (15 dní) |
| Cena | Freewarová verze - $0, Bulls Eye Plus - $49.99, Bulls Eye 3 Pro - $199 |
| Požadavky | Pentium 300 MHz (a vyšší), 64 MB RAM, 100 MB volného místa na disku, operační systém Microsoft Windows 98/ME/2000/NT 4.0 (SP6), prohlížeč Internet Explorer 5.01 SP1 (a novější). |
Babylon je se od výše uvedených dvou aplikací poměrně liší, ale stále jde o desktopový vyhledávač, který ale využívá encyklopedie, slovníky a glosáře. Je to interaktivní program, který okamžitě po kliknutí na slově v libovolné windows aplikaci zobrazí příslušnou informaci o tomto výrazu („instant information @ a click“).
Po instalaci se aplikace usídlí v nástrojové liště a čeká, až jej uživatel vyvolá kláveso-myší zkratkou - pravé nebo prostřední tlačítko myši plus případný přepínač (Ctrl, Alt, Shift) - nad slovem, které chce objasnit. Může se jednat o zkratku, cizí slovo, neznámý výraz, název a podobně. Toto slovo se může vyskytovat kdekoliv - ve Wordu, Zápisníku, v libovolném dialogu, ba dokonce jako název tlačítka či okna. Po kliknutí se objeví malé okno (Obrázek 4.3.), ve kterém se program pokusí objasnit význam daného slova za použití dostupných glosářů.
Kromě glosářů využívá i slovníky překládající mezi hlavními jazyky. Seznam slovníků a glosářů, se nachází na webu výrobce (http://www.babylon.com/gloss/), kde jsou přehledně roztříděné do jednotlivých kategorií a podkategorií.
Mezi další funkce, kterými tato aplikace disponuje, patří převody jednotek, zahraničních měn, časových pásem (byl-li například vyvolán nad heslem „24 cm“ nabídne ihned konverzi centimetrů na jiné délkové jednotky) a správná výslovnost zkoumaného slova.
Primární glosáře a slovníky (ty, které se použijí při prvním vyhledávání významu zkoumaného slova) lze využívat i bez stahování (stačí si je zaregistrovat). Pokud jsou uložené na disku, pracuje program i bez připojení na Internet - uživatel tím získá rychlejší vyhledávání, ale přijde o nejaktuálnější změny a místo na disku).
Jednotlivé glosáře lze tedy přidávat, ubírat, pokud jsou jen zaregistrované, tak i stáhnout na disk, deaktivovat je a později znovu aktivovat, ohodnotit, případně rovnou napsat autorovi několik poznámek.
Nestačí-li nabízené slovníky, je možnost vytvořit si vlastní a dát jej ostatním k dispozici. K tomu je zapotřebí pouze Babylon Builder, který je zdarma dostupný na stránkách tohoto produktu.
Nebylo -li hledané slovo nalezeno v žádném slovníku (případně není-li uživatel s výsledkem spokojen), může ještě zkusit štěstí v hledání pomocí webových vyhledávačů, které jsou také k dispozici. Výsledkem je zobrazení stránky s výsledky v internetovém prohlížeči.
Nalezené výklady hledaných slov lze pro pozdější použití uložit do speciální složky a snadno se k nim vrátit.
Klady:
Zápory:
Tabulka 4.3. Informace o aplikaci Babylon
| Název a verze | Babylon, verze 3.1b |
| Adresa | http://www.babylon.com |
| Výrobce | Babylon Ltd. |
| Typ | Free Trial verze, 30 dní |
| Cena | Babylon-Pro $17.95 |
Obsah
Původní návrh aplikace byl poměrně jednoduchý a počítal s tím, že se vlastní program bude skládat z uživatelského prostředí a DLL knihoven, které budou sloužit pro komunikaci s jednotlivými servery (Obrázek 5.1.).
Tyto knihovny budou napojeny na cílové DIS servery, případně webové vyhledávací služby typu Altavista, Google, Serge a další. Propojení mezi vlastním uživatelským prostředím a DLL knihovnami zajišťuje společný interface obsahující základní objekty pro komunikaci.
Aby byl systém dále snadno rozšiřitelný, budou DLL knihovny linkovány dynamicky, tedy pro rozšíření možností aplikace o další cílový server stačí dodat příslušnou DLL knihovnu implementující funkce rozhraní (zejména jde o definici parametrů nastavení serveru, dotazu, vlastní vyhledávání, získání dokumentu, definování způsobu zobrazení dokumentu atd.).
Později se tato architektura ukázala nevýhodná zejména z důvodu dalšího využití. Proto byla vlastní aplikace rozdělena do dvou modulů (Obrázek 5.2.).
Vlastní jádro, které se stará o komunikaci s DLL knihovnami, vytvoření dotazu využívající zadané servery, vyhledávání příslušných dokumentů na základě parametrů dotazu, ukládání a načítání dotazů a dokumentů na disk,
Grafické uživatelské rozhraní zajišťuje komunikaci s uživatelem. Jedná se o přívětivé uživatelské prostředí, které zpřístupňuje uživateli aplikace veškeré možností jádra (DISEngine). V budoucnu místo tohoto modulu může být implementován jiný.
Rozhraní (interface) mezi jádrem aplikace (DISEngine) a uživatelským prostředím tvoří knihovna definující objekty, které si tyto moduly předávají.
Prapůvodní interface byl značně jednoduchý a nedomyšlený (Obrázek 5.3.).
Finální verze rozhraní obsahuje mnoho nových objektů, které se v první verzi nevyskytovaly (Obrázek 5.4. a 5.5.). Bližší vysvětlení funkcí jednotlivých komponent rozhraní následuje v dalším textu.Pro specifikaci dotazů a také pro nastavení jednotlivých serverů bylo třeba vybudovat systém parametrů. Bylo několik alternativ, jak tento systém vytvořit:
Obecný systém - v jádře aplikace by byly nadefinované všechny možné parametry dotazu, které mají smysl. Při editaci by se uživateli tyto parametry zobrazily a on by je vyplnil. Tento seznam by pak dostaly všechny servery a ty by využily jen ty parametry, které samy podporují.
Nevýhody tohoto systému jsou zřejmé - málo flexibilní, moc omezené a dále nerozšiřitelné. Na jednu stranu by systém obsahoval zbytečné množství parametrů, které žádný server nevyužije (a uživatel by je tedy vyplňoval zcela zbytečně). Na stranu druhou by tento systém nebyl úplný - vždy by se našel server s parametrem, který tento systém neobsahuje.
Parametry definované v DLL knihovnách. Tento systém by byl velmi flexibilní, bylo by možné nadefinovat libovolný parametr. Nevýhodou je, že každá DLL knihovna bude zbytečně znovu definovat existující parametry.
V tomto případě jsou dvě možnosti, jak definovat seznam parametrů pro uživatele. První možností je udělat průnik parametrů, které nabízí uživatelem vybrané servery, druhou možností je vytvořit jejich sjednocení.
Nevýhodou je nejednoznačnost - dva servery můžou definovat jeden parametr, který defacto plní stejnou funkci, různě. Uživatel pak bude nucen tento parametr vyplňovat dvakrát.
Finální řešení - je založeno na využití kladných vlastností výše uvedených možností. Parametry budou definovány v DLL knihovnách, ale určitá množina nejčastějších a nejobecnějších parametrů bude definována mimo a bude volně využitelná všemi knihovnami.
Parametry budou jednoznačně identifikovány a tak nebude problém vytvořit rozumné sjednocení parametrů různých serverů bez ohledu na místo vytvoření parametru, bez toho aby se v tomto sjednocení objevily duplicity.
Základem je abstraktní objekt TDISParam, od něhož je odvozen objekt reprezentující parametr obsahující vlastní hodnotu (TDISScalarParam). Druhý odvozený objekt (TDISGroupParam) slouží k seskupení několika parametrů, popisujících stejnou vlastnost, do skupiny.
Mezi základní atributy objektu patří ParamID, který jednoznačně identifikuje parametr. LikeParamID se využívá při zatřídění parametru do seznamu při jeho vizuálním zobrazení. Caption, Name a HelpStr slouží k popsání významu vlastního parametru (nebo skupiny).
Některé parametry lze duplikovat. Jsou to ty, které mají MaxCount větší než nula. OrdNum uvádí číslo kopie parametru, originální (původní parametr, který byl duplikován) parametr má OrdNum = 1.
Pole serverů Servers obsahuje seznam serverů, které tento parametr podporují (pouze u parametrů na straně aplikace, na straně serveru je tento atribut nastaven na nil).
Tento potomek TParam obsahuje vlastní hodnotu. Ta je obsažena v řetězcovém atributu Value. Parametr může obsahovat hodnotu různého typu (ValueType):
Řetězec, případně zašifrovaný řetězec (pro uložení hesla a jiných údajů, které se nesmí zobrazovat).
Pravdivostní hodnota. True je uloženo jako řetězec „1“ a False jako „0“.
Datum, který je v řetězcovém atributu Value uložen jako řetězec reprezentující číslo s desetinnou čárkou (stejně jako typ TDateTime obsahuje toto číslo před desetinnou čárkou počet dní od roku 1899 a za čárkou část dne).
Seznam, tedy výběr z předdefinovaných hodnot, které se nachází v poli ListValues. Vlastní hodnota obsahuje index vybraného prvku.
Obsahuje pole Scalars dále nedělitelných parametrů typu TDISScalarParam. Tyto parametry spolu souvisí, proto jsou uvedeny ve skupině (například jméno a heslo pro přihlášení na vzdálený server, nebo datumové rozpětí pro uložení poslední změny dokumentu).
Pro snazší vytváření parametrů obsahuje interface několik konstruktorů. Parametry mohou být vytvářeny kdekoliv. Některé parametry, které jsou nejběžnější (a tedy pro většinu serverů společné) jsou definovány ve zdrojovém souboru GlobalParams. Pole těchto globálních parametrů předává jádro aplikace jednotlivým serverům při jejich vytváření. Tyto servery si tak snadno mohou některé z nich přidat (vytvořit si svou kopii) do svého seznamu. Je tak zajištěna jistá jednoznačnost základních parametrů.
Další možností, kde vytvářet parametry, je vlastní server. Tady vznikl problém s vývojovým prostředím (Delphi 6 firmy Borland), neboť základní metoda objektu TObject:
function InheritsFrom(AClass: TClass): Boolean;
nepracovala správně.
V případě, že byla tato metoda volána v jiném procesu než byl objekt vytvořen (například pokud byl objekt vytvořen v DLL knihovně a pak se testoval jeho typ v aplikaci), vracela chybné výsledky. Řešením bylo zavedení balíčku obsahující vlastní rozhraní (DISIfacePackage.bpl), tedy definice všech objektů. Tento balíček musí být využíván jak aplikací, tak všemi DLL knihovnami (Obrázek 5.6.).
Cílem implementace bylo, aby systém parametrů umožňoval pro libovolný server zadat libovolný parametr, tedy aby bylo možné plně využití serveru. Na druhé straně byl měl ale zajistit uživatelskou přívětivost. Tedy rozhodně by neměl nutit uživatele vyplňovat pro každý server parametry, které jsou shodné (například termy, které musí/nesmí hledaný dokument obsahovat, jazyk dokumentu, ). Proto byla implementována metoda na slévání polí parametrů (GetCommonParams).
Výsledkem slévání je pole parametrů, které obsahuje všechny parametry všech zvolených serverů, ale pokud servery obsahují stejné parametry, jsou tyto ve výsledném seznamu uvedeny pouze jednou. Každý parametr v poli obsahuje seznam serverů (Servers), které daný parametr dodaly. Toto pole ukazatelů poté slouží ke zpětnému nastavení hodnot na stranu serverů - DLL knihoven (SetCommonParams).
Nejdůležitější je funkce, která rozhoduje o tom, zda dva parametry jsou si rovny (a tedy budou slity do jednoho):
function EqualParams (P1, P2: TDISParam;
OrdSensitive: Boolean): boolean;
P1 a P2 jsou porovnávané parametry,
OrdSensitive určuje, zda se má při porovnávání brát
v úvahu jejich atribut OrdNum.
Dva parametry jsou shodné, pokud:
Tato definice mimo jiné umožňuje, aby dvě různé DLL knihovny implementovaly shodné parametry bez toho, aby sdílely společný kód. Stačí, znát ParamID a typ parametrů, což lze snadno zjistit přímo v aplikaci.Pro práci s parametry bylo třeba vytvořit objekt, který by obsahoval více parametrů - k tomu je určen TDISParamList - potomek objektu Delphi TObjectList. Obdobně byly odvozeny objekty pro reprezentaci polí (seznamů) dalších používaných objektů (serverů, dotazů, dokumentů, chyb ): TDISServerList, TDISQueryList, TDISDocumentList, TDISErrorList, TDISDocServerInfosList, TDISQueryServerInfosList. A byly implementovány další potřebné metody pro vyhledávání, třídění a podobně.
Objekt TDISParamList obsahuje několik metod, které strojí za povšimnutí.
FindParam(PrimID, SecID, OrdNum: integer;
var Prim, Sec: TDISParam): boolean;
Slouží k hledání parametru daných vlastností (PrimID,
SecID, OrdNum).
PrimID obsahuje ID hledané skupiny, nebo skalárního parametru,
který není ve skupině.
SecID se použije pro hledání parametru ve skupině.
V takovém případě PrimID obsahuje ID skupiny a
SecID identifikátor skalárního parametru.
OrdNum udává pořadové číslo.
V Prim bude navrácen ukazatel na hledaný
skalární parametr (pokud není ve skupině), případně na skupinu.
Sec se použije v případě hledání skalárního parametru,
který se nachází ve skupině (ukazatel na skupinu bude v Prim).
GetParamValue (PrimID, SecID, OrdNum: integer;
var Val: string): boolean;
Pokusí se najít zadaný parametr a v proměnné Val vrátí
jeho hodnotu.
function EqualParam(AParam: TDISParam; OrdSensitive:
Boolean = true): TDISParam;
Nalezne první parametr shodný s AParam dle výše uvedené
definice v seznamu.
Ukázky několika parametrů
Parametr pro zadání slov, která má hledaný dokument obsahovat (nejběžnější parametr, který používá každý server).
TDISScalarParam.Create (
gpsidMainQueryAnd,
gpsidMainQueryAnd,
'Musí obsahovat',
'Musí obsahovat',
'Slova, která dokument musí obsahovat.',
1,
NotCheckVal,
NotCheckVal,
vtString,
''
);
Parametr pro zadání časového intervalu kdy byl dokument vytvořen, případně modifikován. Jelikož musí parametr obsahovat dva časové údaje, nejedná se o jeden skalární parametr, ale o skupinu parametrů, jež obsahuje dva skaláry, které je nejprve třeba vytvořit.
Scal1 := TDISScalarParam.Create (
gpsidDocDate_From,
gpsidDocDate_From,
'Datum od',
'Od',
'Počátek intervalu, kdy byl dokument vytvořen (modifikován)',
1,
NotCheckVal,
NotCheckVal,
vtDate,
''
);
Scal2 := TDISScalarParam.Create (
gpsidDocDate_To,
gpsidDocDate_To,
'Datum do',
'Do',
'Konec intervalu, kdy byl dokument vytvořen (modifikován)',
1,
NotCheckVal,
NotCheckVal,
vtDate,
''
);
TDISScalarGroup.Create (
gpgidDocDate,
gpgidDocDate,
'Datum dokumentu',
'Datum modifikace dokumentu',
'Časový interval, kdy byl dokument vytvořen (modifikován)',
1,
[Scal1, Scal2]
);
DLL knihovna jež implementuje DIS server, musí exportovat funkci bez parametrů, vracející potomka objektu TDISServersInfo. Tento objekt (TDISServersInfo) slouží ke zjištění počtu serverů, které tato knihovna implementuje (metoda GetServerCount ()) a také k jejich vytvoření metodou GetServer (i, GlobParams), kde i je index vytvářeného serveru a GlobParams je pole základních nejčastěji používaných parametrů, které server může využít (implementovat).
Z výše uvedeného vyplývá, že jedna DLL knihovna může obsahovat několik serverů, což je velmi výhodné. Obvzláště v okamžiku, kdy jsou tyto servery velmi podobné a mohou se tak snadno odvodit od společného předka (jak to bylo provedeno v případě implementace webových fulltextových vyhledávačů).
Vlastní server je v DLL knihovně implementován potomkem objektu TDISServer. Objekt obsahuje jednoduché atributy popisující server: jméno (Name), jeho zkratku používanou ve stručnějších výpisech (ShortName), číslo verze (Version) a další informace (Info).
Pro vlastní nastavení serveru slouží pole parametrů SettingParams. Obdobné pole QueryParams slouží k uchování parametrů dotazu, jež server poskytuje. Při vlastním vyhodnocení dotazu se používá instance objektu TDISServerQuery. Průběh vlastního vyhledávání se zobrazuje pomocí feedbackové funkce ProgressProc. Pokud si uživatel přeje zastavit vyhledávání, nastaví se atribut StopFind na True.
Někdy je potřeba používat několik serverů stejného typu. Například v případě dat uložených na několika serverech Oracle8i interMedia. Toto je řešené vytvořením více kopií serverů, které se budou lišit v nastavení (budou mít různé adresy, jména, hesla, ) a také v některých parametrech dotazu. O tom, zda server podporuje vytváření dalších kopií rozhoduje jeho vlastnost EnableMoreServers. Tyto kopie se pak liší ve svém pořadovém čísle (ServerNum). Pro jednoznačnou identifikaci serveru slouží atribut IDName.
Z metod stojí za zmínku Login a Logout pro připojení a odpojení od skutečného DIS serveru, QueryCheck pro otestování položeného dotazu, a Find pro vlastní hledání.
Po získání seznamu dokumentů odpovídajících dotazu by měl sever umět stáhnout dokumenty na lokální disk a zobrazit je. Slouží k tomu metody GetDocFileName (zjištění jména dokumentu z objektu TDISDocument), SaveDoc (získání dokumentu a jeho uložení na disk) a GetOpenParams (nastavení parametrů pro jeho zobrazení v asociované aplikaci funkcí ShellExecute).
Jádro aplikace (DISEngine) při přihlášení uživatele vytvoří seznam dostupných DLL knihoven (tyto se musí nacházet v podadresáři Servers). Jedna knihovna může obsahovat i několik různých serverů, jejich počet a jednotlivé instance se získá přes potomka objektu TDISServersInfo (viz oddíl nazvaný „Struktura DLL knihovny“). Některé servery mohou mít navíc další kopie (viz oddíl nazvaný „Vlastní server“).
Z těchto serverů se získá jejich pole nastavovacích parametrů (SettingParams), ze kterých se poskládá globální seznam parametrů nastavení všech serverů. Tento seznam neobsahuje žádné hodnoty. Ze sekce Global/ServersSetting ini souboru uživatele (User.ini) se načtou všechny dříve uložené hodnoty tohoto seznamu. Nastavené parametry se překopírují do lokálních polí příslušných serverů. Nyní je aplikace připravena pro vyhodnocování uživatelových dotazů.
Pro vytvoření prázdného dotazu je nutno zavolat metodu CreateNewQuery objektu TDISEngine. Prvním parametrem je identifikátor dotazu, ze kterého se odvozuje (odvození slouží k překopírování hodnot z původního dotazu, dojde vlastně k vytvoření kopie dotazu), případně nil, pokud se jedná o zcela nový dotaz.
Druhým parametrem je seznam serverů, které má dotaz využít. Tyto servery se překopírují do příslušného seznamu QServers v nově vytvořeném objektu TDISQuery. Posledním krokem vytvoření nového dotazu je získání seznamu parametrů. Ten se získá zavoláním metody GetCommonParams.
Nyní je na uživateli, aby vyplnil vlastnosti a další parametry dotazu. Při tom má stále možnost přidávat (TDISQuery.AddServer) a ubírat (TDISQuery.RemoveServer) servery, kterých se bude dotaz týkat. Po každé takovéto změně je třeba přidat do seznamu nové parametry, či naopak odstranit ty přebytečné. Tady je ještě nutno poznamenat, že při přidávání serveru je nejdříve nutné se na tento server připojit voláním jeho metody Login. U některých serverů, kde není potřeba se přihlásit (například webové vyhledávače), je tato metoda prázdná. Pokud je volání neúspěšné, server nebude přidán.
Po ukončení editace se zkontrolují uživatelem zadané údaje metodou TDISEngine.QueryCheck. Jelikož je kontrola parametrů závislá na zvolených serverech, vyplní tato metoda serverové objekty Query parametry dotazu (SetCommonParams) a poté zavolá QueryCheck jednotlivých serverů a získá pole případných chyb (TDISErrMsgList), které zobrazí uživateli.
Vlastní vyhledávání je poměrně jednoduché. Nastaví se parametry dotazu na straně serveru (objekt Query typu TDISServerQuery) a pro každý server se vytvoří hledací vlákno (TDISFindThread) s parametry: pořadí serveru, zpětně volaná funkce pro zobrazení postupu hledání GProgressProc, další zpětně volaná funkce, která se volá při skončení vyhledávání EndThreadProc a odkaz na příslušný server. Hledací vlákno okamžitě po svém vytvoření začne vyhledávat, což spočívá v zavolání metody Find přiděleného serveru a předání funkce na zobrazování průběhu. Při ukončení aktivity vlákna (vyhledávání) se zavolá metoda EndThreadProc. Průběh hledání lze také předčasně ukončit nastavením atributu StopFind = True serveru.
Po ukončení hledání server připraví pole nalezených dokumentů (ne vždy je to tak triviální - viz oddíl nazvaný „Implementace webových vyhledávačů“). Pokud cílový DIS server podporuje ohodnocení, musí být toto ohodnocení převedeno do intervalu 0..100.
Jakmile všechny servery (vlákna) ukončily vyhledávání přichází na řadu další fáze - získání výsledků. Metoda GetQueryResults projde všechny oslovené servery a vytvoří si informační objekt typu TDISQueryServerInfo, který popisuje výsledek vyhledávání daného serveru (počet nalezených dokumentů, počet vrácených dokumentů, počet chyb, dotazovací řetězec, dobu trvání vyhodnocení dotazu a další).
Vrátí-li server nějaké dokumenty, přidá je do seznamu všech nalezených dokumentů. Ale nejdříve zjistí, zda už daný dokument není v seznamu obsažen (pomocí metody TDISDocumentList.EqualDoc). Je-li již v seznamu, spojí dokumenty do jednoho. Tedy přepočítá výsledné skóre a pořadí dokumentu a do pole DocServerInfos dokumentu přidá odkaz na další server.
Není-li v seznamu ještě obsažen, přidá jej tam a do pole DocServerInfos dokumentu vloží odkaz na informující objekt TDISDocServerInfo (kde je uveden odkaz na server, skóre a pořadí dosažené na tomto serveru).
Zde nastal problém se způsobem uspořádávání dokumnetů na výstupu. Jelikož ne každý server vrací ohodnocení dokumentu (míru jeho relevantnosti vzhledem k položenému dotazu), nelze použít skóre (jak by se potom měly zařadit neohodonocené dokumenty?). Jedním z možných řešení (které bylo nakonec použito) bylo využití pořadí dokumentu, které vrací každý server. V přehledu nalezených dokumentů tak přibyl další sloupeček informující o celkovém pořadí. Toto Výsledné pořadí (a stejně tak skóre) se vypočte jako aritmetický průměr pořadí (skóre) dosažených na jednotlivých serverech. Způsob, jak tento problém řeší ostatní metavyhledávače, se bohužel nepodařilo zjistit (jejich výrobci odmítli podat bližší popis z důvodu utajení těchto algoritmů před konkurencí).
Pro zobrazování dokumentů bylo uvažováno o několika alternativách:
Zobrazení pomocí externího webového prohlížeče - nešlo by prohlížet dokumenty jiného typu než HTML stránky (snad jen ještě některé další formáty v závislosti na pluginech nainstalovaných do prohlížeče).
Implementace vlastního prohlížeče v DLL knihovně - zbytečně složité, málo flexibilní. Navíc v případě, že místo grafického rozhraní by byl modul chovající se jako webová služba, by byl tento prohlížeč naprosto zbytečný.
Zavolání externího prohlížeče, který je asociován s koncovkou příslušného dokumentu - tato možnost se nakonec ukázala jako optimální. DLL knihovna serveru, který daný dokument nalezl rozhoduje o jeho koncovce a také specifikuje parametry funkce ShellExecute, která dokument zobrazí. Není proto složité dodat zároveň s DLL knihovnou externí prohlížeč, který se bude volat.
Další problém vznikl při řešení zobrazení seznamu parametrů uživateli. Původně se uvažovalo o jednoduchém Layout manageru, který by řídil rozmístění vstupních polí pro jednotlivé parametry v dialogu. Toto se záhy ukázalo jako velmi složité a nepřehledné, protože výsledný seznam může obsahovat až několik desítek parametrů (plus další nově vytvořené kopie).
V konečném řešení (Obrázek 5.9.) jsou parametry reprezentovány jednoduchým stromem, který obsahuje maximálně dvě úrovně - vlastní parametr (TDISScalarParam) a případně skupina (TDISGroupParam), která parametr obsahuje. Komponenty pro zadání dat skupiny parametrů jsou v dialogu umístěny jednoduše pod sebou.
Toto řešení je velmi přehledné a elegantní. Hodnoty nastavených parametrů lze vidět přímo ve stromě a dialog není přeplácaný díky tomu, že se zobrazuje pouze vstupní pole vybraného parametru (případně několik komponent, pokud je parametr součástí skupiny).
Uživatelské prostředí aplikace neobsahuje mnoho dalších zajímavých technik. O možnostech, které uživateli nabízí pojednává spíše uživatelská část dokumentace. Jedinými zajímavými oblastmi je export seznamu dokumentů a formát ukládání dat (nastavení aplikace).
Seznam nalezených dokumentů, který aplikace po vyhledání zobrazí je možné uložit do souboru a později znovu načíst. Další možností uchování těchto dat je export. V současné době jsou podporovány tyto formáty:
Výpis vygenerovaný jako HTML stránka s použitím kaskádových stylů.
Tento formát lze načíst do většiny tabulkových programů jako je například Microsoft Excel (kde lze s daty dále pracovat). Jednotlivé hodnoty jsou ve výstupním souboru odděleny čárkou, věty jsou odděleny odřádkováním.
Univerzální formát. Neobsahuje žádné formátovací tagy, výstup lze prohlížet na libovolné platformě.
Šablonu exportu tvoří jednoduchý textový soubor, který kromě vlastního formátování výstupního exportu (například HTML tagy v případě HTML exportu) obsahuje i speciální tagy, které aplikace nahradí příslušnými daty. Tyto tagy mají následující syntaxi:
<#JMENO_TAGU JMENO_ATRIBUTU='HODNOTA'>
Jména možných tagů i s vysvětlivkami viz 5.1..
Tabulka 5.1. Názvy a popisy tagů šablony
| Název tagu | Význam |
|---|---|
| ACT_DATE | Aktuální datum a čas (tedy datum a čas exportu) |
| USER_NAME | Jméno aktuálně přihlášeného uživatele |
| DOC_COUNT | Počet nalezených dokumentů |
| Tagy reprezentující vlastnosti dotazu | |
| QNAME | Název dotazu |
| QCREATED | Datum a čas vytvoření dotazu |
| QEDITED | Datum a čas poslední modifikace dotazu |
| QSEARCHED | Datum a čas posledního vyhledávání dokumentů odpovídajících dotazu |
| QTOTAL_COUNT | Maximální počet nalezených dokumentů z jednoho serveru |
| QSERVER_COUNT | Počet dotazem využívaných serverů |
| QSERVERS | Seznam serverů, které dotaz používá pro vyhledávání |
| QNOTE | Poznámka k dotazu |
| Tagy reprezentující vlastnosti dokumentu | |
| DNUM | Aktuální číslo dokumentu |
| DNAME | Název dokumentu |
| DLOCATION | Lokace dokumentu |
| DSCORE | Celkové skóre dosažené dokumentem |
| DORDNUM | Celkové pořadí dokumentu |
| DCREATED | Datum vytvoření dokumentu |
| DMODIFIED | Datum poslední změny dokumentu |
| DEXTRACT | Ukázka z dokumentu |
| DNOTE | Poznámka k dokumentu |
| DSERVERINFOS | Informace o hodnocení dokumentu servery, které jej nalezly |
| Speciální tagy | |
| TEMPLATE_INFO | Tag popisující vlastní šablonu, musí být uveden na začátku souboru (tedy jako první tag), má dva atributy viz popis dále. |
| LIST_BEGIN | Tag označující začátek smyčky, která obsahuje všechny nalezené dokumenty. Mezi tagy LIST_BEGIN a LIST_END by měly být uvedeny tagy popisující dokument, které budou nahrazeny skutečnými vlastnostmi nalezených dokumentů. |
| LIST_END | Konec smyčky dokumentů |
Rozšiřující atributy jsou použity pouze u jediného tagu TEMPLATE_INFO, který popisuje šablonu a musí být uveden na samém začátku souboru.
popis jeho atributů:
Koncovka, s jakou se bude soubor ukládat (html, txt, xml, ). Tato koncovka je poměrně důležitá, neboť to bude výchozí koncovka, pokud uživatel nezapíše jinou. Také určuje který prohlížeč se použije pro zobrazení výsledného exportu (dle nastavení asociací v systému).
Jméno (může být i s krátkým komentářem), pod jakým bude šablona uvedena v seznamu dostupných formátů pro export.