Obsah Dal¹í Pøedchozí

9.4.5 Konfiguraèní soubory k filtrùm

Filtry i FilterManager pou¾ívají pøi své èinnosti konfiguraèní soubory. Ty se nacházejí v adresáøi "config". Mezi konfiguraèní soubory patøí i kódovací tabulky, které se také nacházejí v adresáøi "config".

9.4.5.1 Konfiguraèní soubory pro FilterManager.

"Filter Manager" spou¹tí jednotlivé filtry podle dané konfigurace, která je ulo¾ena v konfiguraèním souboru. Tìchto souborù mù¾e být nìkolik (pro dokumenty, pro dotazy, pro velké dokumenty, ...) nebo» "Filter Manager" pøi spu¹tìní dostane jako parametr cestu k pøíslu¹nému souboru a podle nìj jednotlivé filtry spou¹tí.

Syntaxe.

Pøíkazy pro "Filter Manager" se vkládají do hranatých závorek. V¹e co je mimo hranaté závorky je pova¾ováno za komentáø. "Filter Manager" rozpoznává dva typy pøíkazù. Pøíkaz EXE spustí filtr a pøíkaz SET nastavuje polo¾ky v hlavièce. Èasto chceme spou¹tìt filtry nebo nastavovat hlavièku za urèitých podmínek a k tomu slou¾í podmínka IF. Lze pou¾ít tyto tøi zápisy:

Speciálním pøípadem je filtr Stoplist, který není naprogramován jako DLL knihovna a tak na jeho spu¹tìní jsem zavedl samostatný pøíkaz [ UseStoplist ]. Podmínka obsahuje výraz porovnávající øetìzec s polo¾kou hlavièky. Výraz má tvar:

 (polo¾ka_hlavièky operátor øetìzec)
    
    ... polo¾ka_hlavièky (napø. type, author, language,...)
    ... operátory jsou dva:  == nebo !=
    ... øetìzec se porovnává s hodnotou nastavenou v hlavièce
        (hodnota 0 znamená nenastavenou polo¾ku v hlavièce)

V¹e je patrné z pøíkladù.

Zji¹tìní typu kódování. Pokud není nastaveno kódování, tak voláme filtr "Charset", který ho zjistí.

[ IF (charset == 0)  EXE Charset ]

Pøekódování dokumentu. Pokud dokument není v kódování "win-1250", tak musíme dokument pøekódovat (voláme filtr "Code").

[ IF (charset != win-1250) EXE Code ]

Zji¹tìní jazykù. Pokud neznáme jazyk dokumentu, tak voláme filtry "TryENG" a "TryCZE".

[ IF (language == 0) EXE TryENG TryCZE ]

Volání Stoplistu. Stoplist je spoleèný pro v¹echny jazyky, tak¾e ho voláme v¾dy. Samozøejmì, ¾e lze volat Stoplist i po podmínce IF.

[ UseStoplist ]

Filtry lze volat i bez podmínky.

[ EXE LemENG LemCZE    StopENG StopCZE    Count ]

Nastavení hlavièky. Napøíklad pokud není uveden autor, tak si zadáme vlastního.

[ IF (author == 0) SET  Já jsem autorem tohoto dokumentu ] 

Mezery v pøíkazech jsou pro pøehlednost (jsou ignorovány). Pouze u pøíkazu SET se mezery zachovávají (mezery uvnitø øetìzce se neodstraòují). U pøíkazu [ IF (...) SET     aa bb cc       ] se do hlavièky nastaví "aa bb cc". U podmínky dochází k hledání zadaného øetìzce v øetìzci hlavièky (tj. øetìzec z podmínky musí být obsa¾en v øetìzci hlavièky). Napøíklad u testování jazyka hledáme øetìzec "CZE" v øetìzci "ENG CZE GER" (nejedná se tedy o pøesné porovnávání).

9.4.5.2 Konfiguraèní soubory pro jednotlivé filtry.

Konfiguraèní soubory pro filtry jsou v adresáøi "config". Kompletní cesta k tomuto adresáøi musí být nastavena v hlavièce dokumentu a to v polo¾ce "path". Cestu mù¾e nastavit jádro Agenta, ale i pøíkaz SET v konfiguraèním souboru pro "Filter Manager". Pokud není cesta nastavena, tak filtry potøebující konfiguraèní soubory ohlásí chybu.

Konfiguraèní soubor Charset.cfg

Tento soubor pou¾ívá filtr "Charset". Jsou v nìm v¹echny znaky kódování "win-1250" a u ka¾dého znaku je uvedeno, jestli jde o dobrý èi ¹patný znak. Dobré znaky jsou znaky pou¾ívané v textových dokumentech. Jeliko¾ je Agent zamìøen na èeské (popøípadì anglické) dokumenty, mezi dobré znaky patøí: znaky èeské abecedy, èíslice + uvozovky, èárka, støedník, pomlèka, ... Mezi ¹patné patøí napøíklad øídící znaky nebo s,c,z,... s èárkou nebo a,e,i,o,u,... se støí¹kou a jiné "divné" znaky. Samozøejmì je mo¾né upravit nastavení i pro jiné jazyky. Pokud chce administrátor zmìnit znak na dobrý èi ¹patný staèí jenom poopravit konfiguraèní soubor. Formát souboru je následující: První sloupec urèuje zda je znak dobrý (Y) èi ¹patný (N). Pokud se v prvním sloupci objeví jiná hodnota ne¾ je "Y" nebo "N", bude pova¾ována jako "N". Tento sloupec je potøebný pro èinnost Agenta. Zbývající dva sloupce jsou pouze pro u¾ivatele (pro lep¹í orientaci v souboru). Druhý sloupec urèuje èíslo znaku (kód znaku ve "win-1250") a ve tøetím sloupci je slovní popis znaku. V konfiguraèním souboru se nesmí pøehazovat èi odstraòovat ¾ádné øádky. Je mo¾né odstranit druhý a tøetí sloupec, ale èinnost filtru se asi výraznì neurychlí.

Konfiguraèní soubor usechar.cfg

Tento soubor pou¾ívají filtry, které získávají termy z dokumentu. Jedná se o filtry "CutHTML" a "CutTEXT". Soubor obsahuje v¹echny tisknutelné znaky "win-1250" (znaky 32-255). V souboru je definováno jaké znaky patøí mezi oddìlovaèe slov a také je zde nastaven pøevod na malá písmena. Je mo¾né tento pøevod zru¹it a pak filtry budou zachovávat malá a velká písmena, tak jak se v dokumentu vyskytují. Agent pracuje jen s prvním sloupcem. Druhý a tøetí sloupec jsou pro orientaci v souboru (druhý sloupec...kód znaku, tøetí sloupec...popis znaku). Øádky nelze pøehazovat (znaky jsou seøazeny podle kódù). Hodnoty v prvním sloupci mají následující význam:
"N"...znak je pova¾ován za oddìlovaè slov (",.-/:? atd.).
"Y"...znak patøí do termu.
"XXX"...znak patøí do termu, ale je nahrazen znakem s kódem XXX. (Jde o pøevedení velkých písmen na malé. Napøíklad u znaku "D" je uvedena hodnota 100, co¾ je znak malé d).

Konfiguraèní soubor easytags.cfg

Tento soubor vyu¾ívá filtr "CutHTML". Soubor obsahuje HTML tagy, které zvýrazòují text v dokumentu. U ka¾dého tagu je uvedena váha, která zmìní aktuální váhu. Uvozující tag váhu zvy¹uje a uzavírající tag váhu sni¾uje (vrací ji zpìt). U ka¾dého tagu je také parametr BREAK (zalomení). Zalomení urèuje zda HTML tag rozdìluje slova mezi kterými se nachází.
Napøíklad: kilogramy je v HTML zapsáno takto: kilo<B>gram</B>y
V tomto pøípadì nesmí tag rozbít slovo "kilogramy". Jiné tagy slova rozdìlují (vìt¹inou lámou øádku - napø. <H1>). Hodnota "Y" tedy øíká, ¾e tag rozdìluje text do kterého je vlo¾en. Nastaví-li administrátor v¹echny váhy na hodnotu 0, tak dosáhne stejné ohodnocení termù (váha bude 1) jako u filtru CutTEXT, který zpracovává èistý text.

Konfiguraèní soubor entita.cfg

Dal¹í konfiguraèní soubor pro filtr "CutHTML". Soubor obsahuje pøepis HTML entit. V prvním sloupci je uvedena entita zapsaná v HTML jazyce. V druhém sloupci je kód znaku pøíslu¹ející entitì. Tøetí sloupec je pouze orientaèní a jedná se o slovní popis znaku.

Konfiguraèní soubor TryCZE.cfg"

Konfiguraèní soubor je urèen pro filtr "TryCZE" a obsahuje èeská slova (velmi frekventovaná). Ka¾dé slovo musí být vlo¾eno mezi vìt¹ítka (<slovo>). Libovolné poznámky v souboru nemají vliv na èinnost Agenta. Slova s háèky nebo èárky nejsou nejvhodnìj¹ími, nebo» na Internetu se vyskytuje velká spousta dokumentù v èe¹tinì, ale bez diakritiky. Aby filtr bezpeènì poznal, ¾e se jedná o èe¹tinu, mù¾eme do konfiguraèního souboru zadat velké mno¾ství slov. Ale je tøeba si uvìdomit, ¾e se èinnost filtru mù¾e zpomalit. Dal¹í poznámky je mo¾né najít pøímo v konfiguraèním souboru.

Konfiguraèní soubor TryENG.cfg"

Tento soubor pou¾ívá filtr "TryENG" a má stejný formát jako soubor TryCZE.cfg, ale obsahuje frekventovaná anglická slova.

9.4.5.3 Kódovací tabulky.

Kódovací tabulky pou¾ívají dva filtry. Filtr "Charset" pøi rozpoznávání kódování dokumentu a potom filtr "Code" pøi jeho pøekódování. Tabulky jsou ulo¾eny v adresáøi "config" a kompletní cesta je nastavena v hlavièce (polo¾ka path). V¹echny kódovací tabulky jsou jednosmìrné (pøevádí dané kódování do kódování "win-1250", ale ne zpìt). Kódovací tabulka je soubor, který obsahuje 256 znakù. Jedná se o znaky ze znakové sady "win-1250". Uspoøádání znakù závisí na typu kódování, které tabulka pøedstavuje. Na i-té pozici v tabulce je znak, který odpovídá znaku pøíslu¹ného kódování (se znakovým kódem i). Napøíklad znak '®' je na i-té pozici nebo» v daném kódování má kód s hodnotou i. Pøi vytváøení tabulky mù¾e u¾ivatel narazit na problém: V daném kódování je znak, které kódování "win-1250" neobsahuje. Jsou dva zpùsoby øe¹ení. Buï se znak pøevede na podobný znak, který se ve "win-1250" vyskytuje, nebo se pøevede na nìjaký netisknutelný znak a v textu se neobjeví (dal¹í filtry ho vypustí). Takto jsem to provedl u kódování "iso-8859-2". To má na pozicích 128-159 øídící znaky a ty jsem pøevedl na znak s èíslem 5.

9.4.5.4 Chybová hlá¹ení

Pøi filtrování dat mù¾e nastat nìjaká chyba. Ta se zapisuje do hlavièky (polo¾ka error). Chyby vìt¹inou o¹etøuje aplikaèní server (A). Zde jsou v¹echna mo¾ná chybová hlá¹ení:


1999-02-14 Radek Weisfeit