Obsah Dal¹í Pøedchozí

10.2.3 Specifikace jazyka sí»ové komunikace mezi klientem a serverem

U ka¾dého pøíkazu je uveden jeho syntax a odpovìï na úspì¹nì provedený pøíkaz. Administrátor smí pou¾ívat v¹echny uvedené pøíkazy, obyèejný u¾ivatel (pøipojený jako host nebo u¾ivatel bez práva modifikace) pouze pøíkazy oznaèené (g).

Odpovìdi

Odpovìï je v¾dy uvozena písmeny OK nebo KO. OK znamená úspì¹né provedení pøíkazu a na dal¹ích øádcích následují pøíslu¹ná data. KO je na zaèátku odpovìdi tehdy, jestli¾e pøi vyhodnocení pøíkazu do¹lo k chybì. Po KO je v¾dy za dvojteèkou uvedeno chybové hlá¹ení.

10.2.3.1 Pøíkazy

Pøehled pøíkazù
Øízení pøístupu
connect
disconnect
Správa systému
set system timeout
set system database
set system language
set system output
get system timeout
get system encoding
get system languages
get system types
get system database
get system language
get system output
Správa u¾ivatelských sezení
get sessions count
get sessions
kill session
Správa prostøedí u¾ivatelského sezení
set session timeout
set session language
set session output
set session database
get session timeout
get session language
get session output
get session database
Správa historie dotazù
get queries
get query
delete query
delete all queries
Správa databáze
create database
open database
close database
close all databases
create book
remove database
remove book
remove doc
remove from stoplist
add doc
add docs from
add to stoplist
add to stoplist from
get open databases
get all databases
get books
get stoplist
rename database
rename book
rebuild
Statistické údaje o databázi
get database count
get statictics
Dotazovací jazyk
query
next from
Popis pøíkazù

Pomocí '>' a '<' je znázornìno zda se jedná o pøíkaz, nebo o odpovìï. Pøed pøíkazem je v¾dy '<', na následujících øádcích je po '>' uvedena pøíslu¹ná odpovìï. Pomocí '[' a ']' je oznaèen nepovinný parametr pøíkazu. '(' a ')' oznaèují implicitní hodnoty daných parametrù. "Svislítko" '|' mezi výrazy znamená mo¾nost výbìru z pøíslu¹ných výrazù. Adresy dokumentù se musí psát s prefixem file:// nebo http:// podle toho zda se soubor nachází na lokálním disku, nebo je mo¾nost stáhnout ho po síti.

Je-li v pøíkazu uvedeno slovo switches (pøepínaèe) znamená to, ¾e na tomto místì lze psát parametry. Jako parametr je mo¾né napsat:

-b "bookname"
Kniha, ve které se má pøíkaz vykonat.
-l "ENG"|"CZE"|"SVK"|"RUS"|"GER"|"SPA"...
Jazyk, ve kterém jsou napsány ostatní argumenty pøíkazu.
-e "iso-8859-2"|"win-1250"|"MacCE"
Kódování pou¾ité v ostatních argumentech.
-h <paramname>="_"
Tento parametr nastavuje bli¾¹í informace o dokumentu. Za paramname mù¾e být dosazeno:
type - typ dokumentu (HTML|TXT)
encoding - kódování dokumentu (win-1250|iso-8859-2)
language - jazyk, ve kterém je dokument napsán (CZE|ENG)
author - autor dokumentu
title - titulek dokumentu
date - datum vytvoøení
free1 - 1. volná polo¾ka
free2 - 2. volná polo¾ka
free3 - 3. volná polo¾ka
Øízení pøístupu

< 0:connect [user_name:password|(guest) [-r|-m]] (g)
> OK/KO
> #id
> databasename
Pøipojení k serveru. Jestli¾e je pou¾it pouze pøíkaz connect bez parametrù je u¾ivatel pøipojen jako host. Po pøipojení obdr¾í u¾ivatel èíslo sezení #id a jméno pracovní databáze databasename. Èíslo sezení se poté pou¾ívá pøi ka¾dém pøíkazu pøed dvojteèkou.

< #id:disconnect (g)
> OK/KO
Odpojení od serveru.

Správa systému

< #id:set system timeout #min
> OK/KO
Nastaví v systémovém prostøedí maximální prodlevu mezi dvìma pøíkazy. (není implementováno)

< #id:set system database "name"
> OK/KO
Nastaví v systémovém prostøedí pracovní databázi pojmenovanou name.

< #id:set system language ENG|CZE|...
> OK/KO
Nastaví v systémovém prostøedí pracovní jazyk.

< #id:set system output #no
> OK/KO
Nastaví v systémovém prostøedí velikost výstupu pro odpovìï na dotaz.

< #id:get system timeout
> OK/KO
> #min
Zjistí ze systémového prostøedí maximální prodlevu mezi dvìma pøíkazy.

< #id:get system encoding (g)
> OK/KO
> win-1250
> iso-8859-2
...
Zjistí jaká podporuje systém kódování.

< #id:get system languages (g)
> OK/KO
> ENG
> CZE
...
Zjistí jaké jazyky podporuje systém.

< #id:get system types (g)
> OK/KO
> HTML
> TXT
...
Zjistí typy dokumentù podporované systémem.

< #id:get system database
> OK/KO
> name
Zjistí pracovní databázi systémového prostøedí.

< #id:get system language
> OK/KO
> ENG|CZE|...
Zjistí jazyk nastavený v systémovém prostøedí.

< #id:get system output
> OK/KO
> #no
Zjistí velikost výstupu nastavenou v systémovém prostøedí.

Správa u¾ivatelských sezení

< #id:get sessions count
> OK/KO
> #no
Zjistí poèet u¾ivatelských sezení na sí»ovém serveru.

< #id:get sessions
> OK/KO
> #sessionid r|m #timeout #idle
> #sessionid r|m #timeout #idle
> ...
Získá informace o v¹ech u¾ivatelských sezeních na sí»ovém serveru. Na ka¾dém øádku je v¾dy èíslo u¾ivatelského sezení, práva u¾ivatele, maximální prodleva mezi pøíkazy a èas, po který nezadal u¾ivatel ¾ádný pøíkaz.

< #id:kill session #id
> OK/KO
Zru¹í u¾ivatelské sezení.

Správa prostøedí u¾ivatelského sezení

< #id:set session timeout #min
> OK/KO
Nastaví v prostøedí u¾ivatelského sezení maximální prodlevu mezi dvìma pøíkazy. (není implementováno)

< #id:set session language ENG|CZE|... (g)
> OK/KO
Nastaví pracovní jazyk v prostøedí u¾ivatelského sezení.

< #id:set session output #no (g)
> OK/KO
Nastaví v prostøedí u¾ivatelského sezení velikost výstupu pro odpovìï na dotaz.

< #id:set session database "name" (g)
> OK/KO
Nastaví v prostøedí u¾ivatelského sezení pracovní databázi pojmenovanou name.

< #id:get session timeout (g)
> OK/KO
> #min
Zjistí z prostøedí u¾ivatelského sezení maximální prodlevu mezi dvìma pøíkazy.

< #id:get session language (g)
> OK/KO
> ENG|CZE|...
Zjistí jazyk nastavený v prostøedí u¾ivatelského sezení.

< #id:get session output (g)
> OK/KO
> #no
Zjistí velikost výstupu nastavenou v prostøedí u¾ivatelského sezení.

< #id:get session database (g)
> OK/KO
> name
Zjistí pracovní databázi prostøedí u¾ivatelského sezení.

Správa historie dotazù

< #id:get queries (g)
> OK/KO
> #queryid
> #queryid
> #queryid
> ...
Vypí¹e èísla v¹ech odpovìdí na dotazy ulo¾ených v historii.

< #id:get query #id (g)
> OK/KO
> #queryid
> #allno
> #no
> #docid
> URL
> #weight
> "book1" "book2" ...
> author
> title
> date
> charset
> type
> language
> free1
> free2
> free3
> #docid
> URL
> #weight
> ...
Vrátí zaèátek výsledku dotazu s èíslem #id. Na prvním øádku po OK je èíslo dotazu, na který se odpovídá, je to zároveò èíslo odpovìdi. Na druhém je poèet v¹ech dokumentù v odpovìdi. Na tøetím se nachází poøadí prvního dokumentu v odpovìdi. Na dal¹ím je poøadí dokumentu v odpovìdi. Pátý øádek obsahuje adresu dokumentu. ©estý váhu s jakou byl dokument nalezen (od 0 do 1). Na sedmém øádku jsou v uvozovkách oddìleny mezerami jména knih, ve kterých se dokument vyskytuje. Na dal¹ích øádcích je autor dokumentu, titulek, datum vytvoøení, kódování, ve kterém je napsán, typ, jazyk dokumentu a tøi volné polo¾ky. Na dal¹ím øádku zaèíná informace o následujícím dokumentu poøadím dokumentu v odpovìdi.

< #id:delete query #id (g)
> OK/KO
Sma¾e z historie odpovìï s èíslem #id.

< #id:delete all queries (g)
> OK/KO
Sma¾e celou historii dotazù.

Správa databáze

< #id:create database "databasename"
> OK/KO
Vytvoøí novou databázi se jménem databasename.

< #id:open database "databasename"
> OK/KO
Otevøe databázi se jménem databasename.

< #id:close database "databasename"
> OK/KO
Zavøe databázi se jménem databasename.

< #id:close all databases
> OK/KO
Zavøe v¹echny otevøené databáze.

< #id:create book "bookname" [in "databasename"]
> OK/KO
Vytvoøí knihu se jménem bookname v databázi databasename. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:remove database "databasename"
> OK/KO
Sma¾e databázi pojmenovanou databasename. Databázi lze smazat jedinì tehdy je-li zavøená.

< #id:remove book "bookname" [in "databasename"]
> OK/KO
Sma¾e knihu pojmenovanou bookname v databázi databasename. Knihu nelze smazat obsahuje-li nìjaký dokument. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:remove doc -s|-a "url" [in "databasename"]
> OK/KO
Je-li pou¾it pøepínaè -s je smazán dokument s adresou url v databázi databasename. Pøi pou¾ití pøepínaèe -a se v databázi databasename sma¾ou v¹echny dokumenty s prefixem url. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:remove from stoplist "term" "term" ... [in "databasename"]
> OK/KO
Odstraní ze stoplistu termy uvedené v pøíkazu. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:add doc "URL" [switches] [in "databasename"]
> OK/KO
Pøidá dokument s adresou URL do databáze databasename. Popis pøepínaèù je popsán vý¹e. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:add docs from "URL" [in "databasename"]
> OK/KO
Pøidá dokumenty, jejich¾ seznam je v souboru s adresou URL, do databáze databasename. Formát souboru pro indexování dokumentù je následující:
URL [switches]
URL [switches]
...
Na ka¾dém øádku je adresa dokumentu a za ní mohou následovat pøepínaèe. Je-li v adrese mezera, musí být uvedena v uvozovkách. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:add to stoplist "term" "term" ... [in "databasename"]
> OK/KO
Pøidá termy uvedené v pøíkazu do stoplistu databáze databasename. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:add to stoplist from "URL" [in "databasename"]
> OK/KO
Pøidá termy ze souboru URL do stoplistu databáze databasename. V souboru musí být termy na samostatných øádcích. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:get open databases (g)
> OK/KO
> databasename
> databasename
> ...
Zjistí jména v¹ech otevøených databází.

< #id:get all databases
> OK/KO
> databasename
> databasename
> ...
Vypí¹e jména v¹ech databází v systému.

< #id:get books [in "databasename"] (g)
> OK/KO
> bookname
> bookname
> ...
Zjistí jména v¹ech knih v databázi databasename. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:get stoplist [in "databasename"]
> OK/KO
> term
> term
> ...
Vypí¹e v¹echny termy obsa¾ené ve stoplistu databáze databasename. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:rename database "oldname" "newname"
> OK/KO
Pøejmenuje databázi pojmenovanou oldname na newname.

< #id:rename book "oldname" "newname" [in "databasename"]
> OK/KO
Pøejmenuje knihu oldname v databázi databasename novým jménem newname. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

< #id:rebuild "databasename"
> OK/KO
Provede reorganizaci databáze databasename.

Statistické údaje o databázi

< #id:get database count
> OK/KO
> #count
Zjistí poèet otevøených databází.

< #id:get statictics [in "database"]
> OK/KO
> #bookcount
> #doccount
> #stoplistcount
> #termcount
V databázi database zjistí poèet knih, dokumentù, termù ve stoplistu a v¹ech termù v databázi. Není-li uvedena databáze explicitnì, pou¾ije se pracovní databáze prostøedí u¾ivatelského sezení.

10.3.2.2 Dotazovací jazyk

< #id:query [switches] [term[:koef] "multi term"[:koef] -x "t e x t"[:koef] -u "URL"[:koef] -d "URL"[:koef] ...] (g)
> OK/KO
> #queryid
> #allno
> #no
> #docid
> URL
> #weight
> "book1" "book2" ...
> author
> title
> date
> charset
> type
> language
> free1
> free2
> free3
> #docid
> URL
> #weight
> ...
Polo¾í dotaz na vyhledání dokumentù v pracovní databázi u¾ivatelského sezení. Dotaz lze blí¾e specifikovat pøepínaèi, které jsou popsány vý¹e. Jako argumenty je mo¾né zadat jednotlivé termy, víceslovné termy. Server poté hledá dokumenty obsahující slova, která se vyskytují v tìchto argumentech. Po pøepínaèi -x následuje souvislý text uzavøený do uvozovek. Po -u adresa dokumentu, ke kterému se hledají podobné. Pøepínaè -d znamená takzvanou zpìtnou vazbu, je tedy následován adresou dokumentu obsa¾eného v databázi. U v¹ech tìchto argumentù mù¾e být za dvojteèkou váha daného argumentu v dotazu. Nezále¾í na poètu argumentù a je mo¾né psát je v jakémkoli poøadí. Formát odpovìdi je popsán vý¹e u pøíkazu get query.

< #id:next #id from #no
> OK/KO
> #queryid
> #allno
> #no
> #docid
> URL
> #weight
> "book1" "book2" ...
> author
> title
> date
> charset
> type
> language
> free1
> free2
> free3
> #docid
> URL
> #weight
> ...
Vy¾ádá si dal¹í dávku odpovìdi na dotaz èíslo #id od dokumentu, který je v poøadí na místì urèeném èíslem #no.
Formát odpovìdi je popsán vý¹e u pøíkazu get query.

10.2.3.3 Pøíklad zahájení práce se systémem

Nejprve se u¾ivatel musí pøipojit k serveru. U¾ivatele Great s heslem King zavedl správce systému. Tento u¾ivatel má právo modifikace, je tedy administrátor.

0:connect Great:King
OK
1
Main

Nadále se bude pou¾ívat èíslo sezení 1 a pracovní databáze Main. Poté vytvoøíme databázi Druhá.

1:create database "Druhá"
OK

Abychom s ní mohli pracovat musíme ji nejprve otevøít.

1:open database "Druhá"
OK

Poté pøidáme do databáze stoplist ze souboru stoplist.lst.

1:add stoplist from "file://stoplist.lst" in "Druhá"
KO:10 words not added.

Stoplist byl úspì¹nì pøidán pouze deset slov se v seznamu vyskytovalo dvakrát. Pro usnadnìní práce nastavíme databázi Druhá jako pracovní.

1:set session database "Druhá"
OK

Nyní mù¾eme pøistoupit k indexování souborù. Pøedem jsme si vytvoøili soubor html.lst, kde je seznam dokumentù k zaindexování. Soubor html.lst vypadá následovnì.

file://c:\html\index.html
"file://c:\html\first page.html"
http://www.java.com/index.html -b "kniha"

Pøed tím je¹tì vytvoøíme knihu, do které se nìkteré dokumenty pøidají.

1:create book "kniha"
OK
1:add docs from "file://html.lst"
KO:1 documents not indexed.

Pouze jeden dokument se nepodaøilo zaindexovat. V takto vytvoøené databázi ji¾ lze vyhledávat. Pokusíme se najít dokumenty v knize kniha.

1:query náhoda:0.8 -x "Já se vrátím.":1.0 -b "kniha"
OK
1
0
1

Tento výpis znamená, ¾e ¾ádný dokument z databáze nevyhovuje dotazu. Kdy¾ chce u¾ivatel ukonèit práci se systémem musí se odhlásit.

1:disconnect
OK

Teï u¾ je u¾ivatel bezpeènì odpojen.


1999-03-03 Pavel Krtièka