OnSearch
v1.3

Jaroslav Benkovský

Poslední změna: Tue Dec 22 13:56:21 1998

Obsah


Co je nového v této verzi


Úvod

OnSearch je program na jednoduché vyhledávání v HTML stránkách. Program čte HTML stránky přímo z disku serveru, na kterém je umístěn. Aby byla zajištěna alespoň základní ochrana souborů, využívá se pro hledání konfigurační soubor obsahující seznam stránek, které je možné prohledávat. Konfigurační soubor také umožňuje kompletně předefinovat vzhled generovaných stránek podle potřeb uživatele.


Příklady použití

Vyhledávání je možné do HTML stránky přidat například následujícím způsobem:

Hledání na našich stránkách:<BR>
<FORM ACTION="/cgi-bin/onsearch" METHOD=POST>
<INPUT TYPE=HIDDEN NAME="user" VALUE="IDU">
<INPUT TYPE=TEXT NAME="word">
<INPUT TYPE=SUBMIT>
</FORM>

Soubor ~/config/search.cfg potom může vypadat třeba takto:

title:Hledání na stránkách !!! user !!!

gimp/index.html
gimp/features.html
gimp/usage.html
gimp/layers.html
gimp/tools.html
gimp/gallery.html
gtk/index.html


Formát konfiguračního souboru

Formát konfiguračního souboru je celkem jednoduchý. Je to textový soubor, který má na prvním řádku identifikační hlavičku


a na každém dalším řádku obsahuje buď definici parametru, anebo relativní
jméno souboru. Prázdné řádky a řádky začínající znakem '#' (kromě výše
zmíněné hlavičky) se ignorují.

Definice parametru slouží ponejvíce k definování podoby stránky se seznamem nalezených souborů. Definice parametru má podobu

Hodnota může obsahovat odkaz na jiný parametr tak, že jeho jméno uzavře mezi vykřičníky:
parametr:hodnota!!! jiny_parametr !!!hodnota
(Mezera mezi vykřičníky a názvem parametru musí být zachována). Odkaz na parametr je nahrazen jeho hodnotou. Pokud tato hodnota obsahuje opět odkaz na parametr, nahradí se i ten atd. - ovšem jen do určité hloubky vnoření.

Odkazy na parametry jsou nahrazovány hdonotou až po přečtení konfiguračního souboru, takže rekurzivní přiřazení, jako např.:

parametr:text !!! parametr !!!
udělá něco jiného, než že k slovu "text" připojí původní obsah parametru!

Jméno souboru definuje soubor, který se má prohledávat. Pokud soubor není přímo v domovském adresáři uživatele, obsahuje jméno i cestu k souboru, relativní k domovskému adresáři uživatele.

Nezapomeňte, že na Unixu se používají k oddělování adresářů dopředná lomítka '/', a ne zpětná lomítka '\' jako MSDOS-ovských klonech.

Příklad:

Soubor ~/config/search.cfg:

item:!!! dirfile !!!

gimp/index.html
gimp/features.html


Parametry v konfiguračním souboru

V konfiguračním souboru je možné definovat libovolné parametry podle potřeb uživatele. Zde ale následuje seznam parametrů, které jsou definovány přímo programem OnSearch nebo mají zvláštní význam.

charset

Definuje kódování použité v prohledávaných WWW stránkách a ve zbývající části konfiguračního souboru. Pokud je toto kódování něco jiného, než ISO-8859-2, je vhodné tento parametr zadat pro správnou funkci vyhledávání v textech s diakritikou.

Hodnotou tohoto parametru je název kódování. Rozpoznává se například ISO-8859-2, CP-1250, MAC, ASCII, KEYBCS2 a jiné.

Příklad:
charset:MAC

context_size, context_margin

context_size určuje základní velikost kontextu nalezeného slova, který se zobrazí při použití parametru !!! context !!!. Velikostí se rozumí počet znaků na každou stranu od místa výskytu.

context_margin určuje maximální počet znaků, o který se může kontext na každé straně prodloužit nebo zkrátit při hledání mezery mezi slovy.

Hodnotou obou parametrů je počet znaků. Implicitní nastavení je 80 a 20.

Příklad:
context_size:150
context_margin:30

header

Definuje podobu záhlaví stránky se seznamem nalezených výskytů.

Příklad:
header:<HTML><BODY BACKGROUND="#FFFFFF"><H1>!!! title !!!</H1>

title

Definuje titulek stránky se seznamem nalezených výskytů. Titulek je použit například v jejím záhlaví (viz výše).

Příklad:
title:Výsledek hledání na našich stránkách

footer

Definuje spodek stránky se seznamem nalezených výskytů.

Příklad:
footer:<HR></BODY></HTML>

item

Definuje vzhled části stránky obasahující odkaz na nalezený soubor. Tato část se v HTML stránce s výsledky opakuje tolikrát, kolik bylo nalezeno souborů.

Příklad:
item:<HR><P><A HREF="/!!! dirfile !!!">!!! dirfile !!!</A></P>

empty_item

Pokud nebyl nalezen žádný výskyt hledaného slova, použije se tento parametr na místě parametru item.

Příklad:
empty_item:<HR><P>Slovo '!!! word !!!' nebylo nalezeno.</P>

user

Tento parametr obsahuje jméno uživatele, v jehož WWW prostoru se vyhledává. Nastavování tohoto parametru na jinou hodnotu sice funguje, ale nemá valný smysl.

Příklad:
title:Výsledek hledání ve WWW prostoru !!! user !!!

word

Tento parametr obsahuje vyhledávané slovo. Nastavování tohoto parametru na jinou hodnotu sice funguje, ale nemá valný smysl.

Příklad:
title:Výsledek hledání !!! word !!!

dirfile

Hodnota tohoto parametru je postupně nastavována na jméno každého souboru, ve kterém byl nalezen výskyt zadaného slova. Nastavování tohoto parametru na jinou hodnotu sice funguje, ale nemá valný smysl.

Příklad:
item:<HR><P><A HREF="/!!! dirfile !!!">!!! dirfile !!!</A></P>

heading

Hodnota tohoto parametru je postupně nastavována na název každého HTML dokumentu, ve kterém byl nalezen výskyt zadaného slova. Název je určen buď HTML tagem <TITLE> anebo prvním tagem <H1>, pokud <TITLE> chybí. Jinak obsahuje jméno souboru. Nastavování tohoto parametru na jinou hodnotu sice funguje, ale nemá valný smysl.

Příklad:
item:<HR><P><A HREF="/!!! dirfile !!!">!!! heading !!!</A></P>

matches

Hodnota tohoto parametru je postupně nastavována na počet výskytů zadaného slova v každém souboru, ve kterém se slovo vyskytuje alespoň jednou. Nastavování tohoto parametru na jinou hodnotu sice funguje, ale nemá valný smysl.

Příklad:
item:!!! dirfile !!! - !!! matches !!!<BR>

context

Hodnota tohoto parametru je postupně v každém 'pozitivním' souboru nastavována na text v nejbližším okolí prvního výskytu hledaného slova - neboli jeho kontext. Samotný hledaný výraz je v něm ohraničen parametry em_on a em_off.

Velikost kontextu určují parametry context_size a context_margin.

Příklad:
item:!!! dirfile !!!<BR>!!! context !!!<BR>

em_on, em_off

Tyto parametry bezprostředně obklopují v nalezeném kontextu hledaný výraz. (viz. parametr context). Tyto parametry se dají s výhodou použít pro zvýraznění slova v kontextu.

Příklad:
em_on:<FONT COLOR="#FF0000"><B>
em_off:</B></FONT>

stat_time, stat_files, stat_files_ok, stat_files_match, stat_matches, stat_bytes, stat_speed, stat_match_ratio, stat

Tyto parametry slouží k získání statistických informací o proběhlém vyhledávání. Hlavní význam je pro asi spíše pro ladění programu OnSearch, ale lze je využít i pro ladění konfiguračního souboru anebo jako zdroj drobných a nepodstatných informací na stránce.

stat_time - počet sekund, které trvalo prohledávání stránek. Tento čas je o něco (málo) menší než celková doba běhu programu.

stat_files - celkový počet souborů k prohledávání uvedených v konfiguračním souboru.

stat_files_ok - počet skutečně prohledávaných souborů.

stat_files_match - počet souborů ve kterých bylo nalezeno hledané slovo.

stat_matches - celkový počet nalezených výskytů slova ve všech prohledávaných souborech.

stat_bytes - celková velikost všech prohledávanách souborů po případném odstranění HTML tagů.

stat_speed - průměrná rychlost prohledávání v bytech za sekundu.

stat_match_ratio - poměr mezi celkovou velikostí nalezených slov a celkovou velikostí textu po případném odstranění HTML tagů. Tento parametr by měl teoreticky udávat význam hledaného slova v daném textu a tedy i hodnotu nalezeného dokumentu. Aby tomuto tak ale skutečně bylo, musela by se přiřadit různá váha podle kontextu, ve kterém bylo slovo nalezeno - např. záhlaví, klíčová slova a nebo nadpisy. Tak tomu zatím není. V budoucnu se bude z hodnoty tohoto parametru odvozovat počet "hvězdiček", které dokument dostane. Zatím je to pouze reálné číslo s malou vypovídací hodnotou.

Tento parametr je na rozdíl od ostatních statistických parametrů nastavován pro každý soubor zvlášť.

stat - tento parametr vypisuje parametry stat_time, stat_bytes a stat_speed.

Příklad:
footer:Prohledáno !!! stat_bytes !!! bytů za !!! stat_time !!! sekund, nalezeno !!! stat_matches !!! výskytů</BODY></HTML>


Parametry CGI skriptu

file=jmeno_souboru

Určuje jméno konfiguračního souboru pro vyhledávání ve WWW prostoru daného uživatele. Tento soubor musí existovat a musí být umístěn v adresáři ~/config. Pokud nebyl tento parametr zadán, použije se implicitní jméno search.cfg.

user=IDU

Určuje jméno uživatele, v jehož WWW prostoru se mají stránky prohledávat.

word=regularni_vyraz

Slovo nebo regulární výraz, který se má v dokumentech vyhledávat. Interpretace závisí na hodnotě parametru regexp.

case=0

Pokud je tento parametr nastaven na 1, bere se ohled na velikost písmen. Implicitně je 0.

regexp=0

Pokud je tento parametr nastaven na 1, obsah parametru word se interpretuje jako regulární výraz. To znamená, že .ůl najde slova kůl, hůl, vůl apod. Pokud je parametr nastaven na 0, interpretuje se doslovně a najde tedy jenom výskyt řetězce .ůl (ať už je to cokoli). Implicitně je 0.

ascii=0

Pokud je tento parametr nastaven na 1, porovnává se bez diakritiky - to znamená, slovo abč vyhledá abc, abč, ábc i ábč. Implicitně je 0.

whole=0

Pokud je tento parametr nastaven na 1, vyhledávají se pouze celá slova, takže kolo vyhledá kolo, ale už ne kolotoč Implicitně je 0.

strip=2

Pokud je tento parametr nastaven na 2, prohledávaný soubor je vždy nejdříve zbaven HTML značek. Pokud je parametr nastaven na 1, soubor je zbaven HTML značek pouze pokud má jeho jméno příponu typu .html, .htm apod. Implicitně je 1.

first=1

Pokud je tento parametr nastaven na 1, vyhledá se vždy pouze první výskyt slova v daném souboru. Implicitně je 0.


Seznam chybových a varovných hlášení

Can't open file %s

Soubor není možné otevřít. Důvodem může být neexistující soubor, neexistující adresář config, chybná přístupová práva apod.

Invalid file name

Jméno souboru, zadané parametrem file anebo v konfiguračním souboru, obsahuje nepovolené znaky. Změňte jméno souboru.

Invalid dir name

Jméno adresáře, zadané v konfiguračním souboru, obsahuje nepovolené znaky. Změňte jméno adresáře.

Invalid user name

Jméno uživatele (IDU), zadané parametrem user, obsahuje nepovolené znaky. Změňte jméno uživatele.

Invalid config file

Konfigurační soubor musí mít jako první řádek uvedeno
jinak nebude rozpoznán. Doplňte tento řádek anebo opravte jméno konfiguračního souboru.

Nothing to search for

Nebylo zadáno slovo nebo regulární výraz, který se má vyhledávat.

File is too big at line

Velikost konfiguračního souboru je omezena, zmíněný řádek už nebylo možno zpracovat.

Line %d is too long

Délka řádku v konfiguračním souboru je omezena, zmíněný řádek nebylo možno zpracovat.


Své připomínky, dotazy a náměty posílejte na webservis@pvt.net
* * * K O N E C * * *