zde - Anopress

Transkript

zde - Anopress
Tovek: Dotazovací jazyk
verze 6.1 a vyšší
Tovek Server, Tovek Tools
© Copyright TOVEK, spol. s r.o. | www.tovek.cz
Tovek
Dotazovací jazyk
verze 6.1 a vyšší
Copyright
Copyright © 1996 - 2011 TOVEK, spol. s r.o.
Tento dokument a softwarový produkt, který popisuje, jsou chráněny autorskými právy a
mezinárodními dohodami o duševním vlastnictví. Lze s nimi nakládat pouze v souladu
s platnou licenční smlouvou. Informace obsažené v dokumentaci mohou podléhat
změnám bez předchozího upozornění.
Popisovaný produkt obsahuje:
Clucene Core Library
Licencováno na základě Apache License, verze 2.0. Licence je k dispozici na
http://www.apache.org/licenses/LICENSE-2.0. S produktem lze nakládat pouze
v souladu s touto licencí.
Ochranné známky
TOVEK, logo TOVEK a InfoRating jsou registrované ochranné známky společnosti
TOVEK, spol. s r.o.
Microsoft a Windows jsou registrované ochranné známky skupiny společností Microsoft.
Další produkty a služby mohou být registrovanými ochrannými známkami nebo
ochrannými známkami svých příslušných vlastníků a v dokumentaci jsou uváděny pouze
pro referenci.
Upozornění a vzdání se odpovědnosti
Pokud není písemně uzavřenou smlouvou stanoveno jinak, je tento softwarový produkt a
související dokumentace poskytován „jak-je“, bez záruk jakéhokoli druhu, ať již výslovně
vyjádřených nebo předpokládaných.
TOVEK, spol. s r.o.
http://www.tovek.cz
4
Obsah
Obsah
Úvod do dotazovacího jazyka .........................................................................................................7
Základní pojmy a jejich vztah k dotazovacímu jazyku ...................................................................7
Přehled operátorů .........................................................................................................................8
Pojmové operátory ...................................................................................................................8
Konceptuální operátory ............................................................................................................9
Poziční operátory ...................................................................................................................10
Relační operátory ...................................................................................................................10
Pokročilé operátory ................................................................................................................11
Přehled modifikátorů ...................................................................................................................11
Syntaxe dotazovacího jazyka........................................................................................................13
Striktní zápis dotazů ....................................................................................................................13
Zjednodušený zápis dotazů.........................................................................................................14
Prefix notace operátorů ...............................................................................................................18
Infix notace operátorů .................................................................................................................18
Koeficient váhy operátorů............................................................................................................20
Pojmenované části dotazu ..........................................................................................................21
Operátory a modifikátory ..............................................................................................................23
Operátor all .................................................................................................................................23
Operátor and, and/w, and/l, and/s, and/c ....................................................................................23
Operátor any ...............................................................................................................................25
Operátor best ..............................................................................................................................25
Operátor contains ........................................................................................................................26
Operátor ends .............................................................................................................................27
Operátory field a filter ..................................................................................................................28
Operátor freetext .........................................................................................................................28
Operátor in ..................................................................................................................................29
Operátor like................................................................................................................................30
Operátor matches .......................................................................................................................30
Operátor near, near/w, near/c, near/m ........................................................................................31
Operátor or, or/w, or/l, or/s, or/c ..................................................................................................33
Operátor paragraph .....................................................................................................................34
Operátor phrase ..........................................................................................................................35
Operátor range ............................................................................................................................35
Operátor sentence ......................................................................................................................36
Operátor soundex .......................................................................................................................37
Operátor starts ............................................................................................................................38
Operátor stem .............................................................................................................................38
Operátor substring ......................................................................................................................40
Operátor thesaurus .....................................................................................................................40
Operátor topic .............................................................................................................................41
Operátor typo/n ...........................................................................................................................42
5
Obsah
Operátor wildcard ....................................................................................................................... 43
Operátor word............................................................................................................................. 44
Operátory !=, <, <=, =, >, >= ...................................................................................................... 45
Modifikátor case ......................................................................................................................... 47
Modifikátor many ........................................................................................................................ 47
Modifikátor order......................................................................................................................... 48
Modifikátor not ............................................................................................................................ 48
Modifikátor lang/id ...................................................................................................................... 48
6
Úvod do dotazovacího jazyka
Úvod do dotazovacího jazyka
Tato příručka popisuje dotazovací jazyk, jeho jednotlivé stavební kameny a způsob jejich použití
pro vyhledání dokumentů v produktech firmy Tovek. Tato kapitola uvádí stručný přehled všech
operátorů dotazovacího jazyka, jejich členění a možnosti jejich zápisu. Detailní informace a příklady
užití konkrétních operátorů jsou uvedeny v příslušných dalších kapitolách.
Základní pojmy a jejich vztah k dotazovacímu jazyku
dotaz
Definuje podmínky, které musí být splněny pro všechny vyhledané
dokumenty, a způsob jejich ohodnocení. Dotaz může obsahovat
operátory, modifikátory a pojmy. Vyhodnocením dotazu jsou
jednotlivým dokumentům přiřazeny váhy odpovídající jejich
relevanci.
pojem
Konkrétní slovo nebo množina slov, které se hledají nebo které
slouží jako parametry nadřízeného operátoru.
operátor
Operátory slouží k definici základních dotazů nebo spojují několik
dotazů dohromady a definují podmínky jejich vyhodnocení.
modifikátor
Upravuje význam modifikované části dotazu.
váha
Váha je číselný údaj definující relevanci dokumentu k danému
dotazu.
koeficient
váhy
Koeficient váhy je číselný údaj u dotazu, kterým je násobena
vypočítaná váha dokumentu. Platná hodnota je z intervalu (0-1>.
jazyk dotazu
Jazyk dotazu ovlivňuje způsob, kterým jsou zpracovávány pojmy
dotazu. Není-li žádný jazyk u dotazu uveden, tak je použit výchozí
jazyk dotazu definovaný v konfiguraci indexu.
pole dotazu
Pole dotazu určuje část dokumentu, pro kterou se dotaz
vyhodnocuje. Není-li pole dotazu uvedeno, tak se použije výchozí
pole dotazu z konfigurace indexu.
pojmenování
dotazu
Pojmenování dotazu nebo jeho částí slouží k definování témat,
případně ke zjednodušení zápisu dotazu.
7
Úvod do dotazovacího jazyka
infix notace
Zápis dotazu, při kterém se operátor nachází mezi jeho parametry.
prefix notace
Zápis dotazu, při kterém se operátor nachází před jeho parametry,
které jsou uzavřené v závorkách.
zjednodušený
zápis dotazu
Zápis dotazu, při kterém je možné vynechat pojmové operátory.
speciální
znaky
Znaky, kterým musí předcházet zpětné lomítko, mají-li být součástí
hledaného pojmu. Jedná se o znaky `'\"<>()[]{},=\, a
v některých případech i o znaky *+?.
poddotaz
Dotaz, uvedený jako parametr operátoru.
Přehled operátorů
Operátory lze rozdělit do dvou hlavních skupin podle toho, jakého typu jsou jejich
argumenty. První skupina je tvořena operátory, jejichž argumenty jsou jednotlivé pojmy.
Tyto operátory umožňují definovat skupiny pojmů, které se mají v dokumentech
vyhledávat. Druhá skupina je tvořena operátory, které spojují dva a více dotazů
dohromady a definují, v jakém vztahu se musí tyto dotazy ve vyhodnocovaných
dokumentech vyskytovat.
Podle významu lze operátory dále rozdělit na následující skupiny:
-
Pojmové operátory
-
Konceptuální operátory
-
Poziční operátory
-
Relační operátory
-
Pokročilé operátory
Pojmové operátory
Pojmové operátory jsou základní stavební kameny dotazů a definují, jaké pojmy se mají
v dokumentech vyhledávat.
8
word
Slouží k vyhledání dokumentů, které obsahují jeden nebo více
výskytů daného pojmu v zadaném tvaru.
stem
Umožňuje vyhledat dokumenty obsahující uvedený pojem
v jakémkoli jeho mluvnickém tvaru.
Úvod do dotazovacího jazyka
wildcard
Najde dokumenty, které obsahují jeden nebo více pojmů, které
odpovídají zadanému regulárnímu výrazu.
typo/n
Vyhledá dokumenty, které obsahují pojmy lišící se od zadaného
pojmu maximálně o daný počet chyb.
thesaurus
Slouží k vyhledání dokumentů obsahujících jakýkoli mluvnický tvar
zadaného pojmu nebo jeho příbuzných pojmů.
soundex
Umožňuje nalézt dokumenty obsahující jakýkoliv tvar pojmů
znějících podobně jako zadaný pojem.
range
Vyhledá dokumenty obsahující pojmy v daném rozsahu.
Konceptuální operátory
Konceptuální operátory spojují jednotlivé dotazy do větších celků:
best
Slouží k nalezení dokumentů, které vyhovují alespoň jednomu
dotazu uvedenému jako parametr operátoru. Tento operátor řadí
vybrané dokumenty v závislosti na výskytu každého parametru
v dokumentu a jeho skóre je tím vyšší, čím více poddotazům
odpovídá.
and
Najde dokumenty, které vyhovují všem dotazům uvedeným jako
parametr operátoru. Tento operátor podporuje několik různých
způsobů vážení výsledků.
or
Najde dokumenty, které vyhovují alespoň jednomu dotazu
uvedenému jako parametr operátoru. Tento operátor podporuje
několik různých způsobů vážení výsledků.
all
Vyhodnocuje dokumenty stejně jako operátor and, ale nepočítá
skóre, a je tudíž rychlejší.
any
Vyhodnocuje dokumenty stejně jako operátor or, ale nepočítá skóre,
a je tudíž rychlejší.
9
Úvod do dotazovacího jazyka
Poziční operátory
Poziční operátory vyhodnocují dokumenty nejen na základě samotného výskytu pojmů,
ale i na jejich konkrétní pozici:
near/n
Slouží k nalezení dokumentů, které vyhovují všem dotazům
uvedeným jako parametr operátoru, jejichž výskyty se nacházejí do
maximální uvedené vzdálenosti. Operátor near podporuje několik
způsobů vážení dokumentů, přičemž standardně je skóre
dokumentů tím vyšší, čím blíže u sebe se jednotlivé výskyty
nacházejí.
paragraph
Tento operátor vyhodnocuje dokumenty stejně jako near/n, kde n
je délka odstavce, která je standardně nastavená na hodnotu 64.
sentence
Tento operátor vyhodnocuje dokumenty jako near/n, kde n je délka
věty, která je standardně nastavená na hodnotu 16.
phrase
Umožňuje nalézt dokumenty obsahující frázi složenou z výskytů
jednotlivých dotazů uvedených jako parametr operátoru. Nejčastěji
se používá k vyhledání dokumentů obsahujících frázi složenou
z několika konkrétních pojmů, příp. jejich stemů.
in
Operátor in definuje v jaké části dokumentu, případně v jakém poli
se má dotaz vyhodnocovat.
Relační operátory
Relační operátory slouží k nastavování podmínek pro netokenizovaná pole dokumentu
(tokenizace je vysvětlena v příručce Tovek: Fulltextové jádro, Příručka administrátora).
Typicky se jedná o pole obsahující datum, číslo nebo řetězcovou konstantu:
10
contains
Umožňuje nalézt dokumenty, které v daném poli obsahují daný
řetězec.
matches
Vyhledá dokumenty, které v daném poli obsahují hodnotu
odpovídající uvedenému vzoru.
starts
Najde dokumenty, které v daném poli obsahují hodnotu začínající
uvedeným řetězcem.
substring
Vyhledá dokumenty, které v daném poli obsahují hodnotu, jejíž
součástí je uvedený řetězec
Úvod do dotazovacího jazyka
ends
Najde dokumenty, které v daném poli obsahují hodnotu končící
uvedeným řetězcem.
<
Najde dokumenty s hodnotou v daném poli menší než uvedená
hodnota.
<=
Najde dokumenty s hodnotou v daném poli menší nebo rovnou
uvedené hodnotě.
=
Najde dokumenty s hodnotou v daném poli rovnou uvedené
hodnotě.
!=
Najde dokumenty s hodnotou v daném poli různou od uvedené
hodnoty.
>=
Najde dokumenty s hodnotou v daném poli větší nebo rovnou
uvedené hodnotě.
>
Najde dokumenty s hodnotou v daném poli větší než uvedená
hodnota.
Pokročilé operátory
Dotazovací jazyk podporuje následující pokročilé operátory:
topic
Umožňuje využít témata uložená u indexu, případně definovaná
lokálně v rámci daného dotazu.
freetext
Pomocí operátoru freetext lze specifikovat dotaz volným textem.
like
Najde dokumenty podobné uvedenému dokumentu.
Přehled modifikátorů
Modifikátory upravují nebo upřesňují význam operátorů. Dotazovací jazyk obsahuje
následující modifikátory:
case
Modifikátor case lze použít s některými pojmovými operátory a
omezuje vyhledávání pouze na pojmy, které se shodují i ve velikosti
11
Úvod do dotazovacího jazyka
jednotlivých písmen.
12
many
Tento modifikátor nastavuje výpočet váhy dokumentu, který
zohledňuje počet výskytů hledaných pojmů v daném dokumentu.
Čím více výskytů dokument obsahuje, tím vyšší bude jemu
přiřazená váha.
not
Obrací význam modifikovaného dotazu, a tudíž umožňuje nalézt
všechny dokumenty, které mu nevyhovují.
order
Operátor order určuje, že se jednotlivé parametry operátoru musí
v dokumentu vyskytovat ve stejném pořadí, ve kterém jsou uvedeny
v dotazu.
lang/id
Definuje jazyk všech parametrů daného operátoru.
[číslo]
Koeficient váhy umožňuje ovlivnit výsledné skóre přiřazené
dokumentu při vyhodnocování dotazu. Jednotlivé části dotazu
mohou mít různé koeficienty váhy a tak různě přispívat k celkové
váze dokumentu.
[jméno]
Pojmenování části dotazu, díky kterému se lze následně na danou
část dotazu odkazovat pomocí operátoru topic.
[jméno/číslo]
V případě, že je třeba operátor nejen pojmenovat, ale i změnit jeho
koeficient váhy, pak se oba tyto údaje zapíší do hranatých závorek
oddělených lomítkem.
Syntaxe dotazovacího jazyka
Syntaxe dotazovacího jazyka
Tato kapitola popisuje způsob zápisu dotazů pomocí dotazovacího jazyka.
Dotazovací jazyk umožňuje využívat jak striktního, tak i zjednodušeného zápisu dotazů,
přičemž oba tyto zápisy mohou být v rámci jednoho dotazu kombinovány. Totéž platí
o prefix a infix notaci operátorů.
Striktní zápis dotazů
Striktní zápis dotazů je způsob zápisu, při kterém jsou vždy uvedeny všechny použité
modifikátory i operátory. Operátory jsou zapsané pomocí prefix notace.
.many.stem( aféra )
<many><stem>( aféra )
Tento způsob zápisu je nejčastěji využíván při definování složitých expertních dotazů
nebo uložených témat, protože umožňuje uvést explicitně všechny parametry hledání a
díky prefix notaci operátorů je jednoznačně určené, které parametry patří kterým
operátorům.
Striktní zápis dotazů umožňuje dva různé zápisy modifikátorů a operátorů:
<modifikátor>
.modifikátor
<operátor>( parametry oddělené čárkou )
.operátor( parametry oddělené čárkou )
Oba dva zápisy jsou ekvivalentní a je možné je kombinovat. Jména operátorů a
modifikátorů jsou nezávislá na velikosti písmen a tudíž je možné jakýkoliv zápis včetně
následujících:
.operátor / <operátor>
.Operátor / <Operátor>
.OPERÁTOR / <OPERÁTOR>
Mezi jednotlivými modifikátory a operátory a dalšími prvky dotazu je možné psát mezery
pro zvýšení čitelnosti, ale není to nutné:
[ 50 ] . many . case . word ( aféra )
[ 50 ] < many > < case > < word > ( aféra )
[50].many.case.word(aféra)
[50]<many><case><word>(aféra)
13
Syntaxe dotazovacího jazyka
Pojmy uvedené jako parametry jednotlivých operátorů mohou obsahovat libovolné znaky
včetně mezer, ale nesmí obsahovat řetězce mající význam operátoru a speciální znaky.
Při zápisu pojmů obsahujících speciální znaky je potřeba před těmito znaky uvést zpětné
lomítko, případně dané pojmy uzavřít do dvojitých uvozovek, jednoduchých uvozovek
nebo zpětných jednoduchých uvozovek.
Speciální znaky, které je nutné uvést zpětným lomítkem, jsou následující:
`'"<>()[]{},=\
Dotaz, který najde dokumenty obsahující např. pojem a'b(c, je nutné tedy zapsat tímto
způsobem:
.many.word(
.many.word(
.many.word(
.many.word(
a\'b\(c )
"a'b(c" )
'a\'b(c' )
`a'b(c` )
Parametry těchto operátorů jsou před vyhodnocením zpracovány stejným způsobem
jako obsah pole, ve kterém se vyhodnocuje, a v případě, že se rozpadne na více částí,
změní se příslušná část na frázi z těchto částí.
Zjednodušený zápis dotazů
Zjednodušený zápis dotazů slouží především k uvádění jednoduchých krátkých dotazů.
Tento zápis umožňuje vynechat nejčastější pojmové operátory a s nimi spojené
modifikátory. Zjednodušený zápis dotazů je možné kombinovat s infix i prefix notací
operátorů.
Zkrácené zápisy lze použít při vyhledávání dokumentů v následujících situacích:
Úkol č. 1
Vyhledání dokumentů obsahujících libovolný tvar pojmu aféra
s vážením zahrnujícím četnost daného pojmu v dokumentu.
Striktní zápis
.many.stem( aféra )
Zjednodušený
zápis
'aféra'
`aféra`
aféra
Uvedený pojem nesmí obsahovat mezery, jinak se daný dotaz bude chovat jako
vyhledávání fráze. V prvních dvou verzích zjednodušeného zápisu nesmí hledaný pojem
obsahovat uvozovací znak, případně musí být tomuto znaku předřazeno zpětné lomítko.
V poslední uvedené a nejčastěji používané variantě dotazu nesmí uvedený pojem
obsahovat ani mezery ani následující speciální znaky, aniž by byly uvedeny zpětným
14
Syntaxe dotazovacího jazyka
lomítkem:
`'"<>()[]{},=\*+?
Úkol č. 2
Vyhledání dokumentů obsahujících konkrétní tvar pojmu aféra
s vážením zahrnujícím četnost daného pojmu v dokumentu
nezávisle na velikosti písmen.
Striktní zápis
.many.word( aféra )
Zjednodušený
zápis
"aféra"
Uvedený pojem nesmí obsahovat mezery, jinak se daný dotaz bude chovat jako
vyhledávání fráze. Navíc nesmí hledaný pojem obsahovat uvozovací znak, případně
musí být tomuto znaku předřazeno zpětné lomítko.
Úkol č. 3
Vyhledání dokumentů obsahujících daný tvar pojmu Aféra
s vážením zahrnujícím četnost daného pojmu v dokumentu a
respektováním malých a velkých písmen.
Striktní zápis
.case.many.stem( Aféra )
Zjednodušený
zápis
.case "Aféra"
.case Aféra
Uvedený pojem nesmí obsahovat mezery, jinak se daný dotaz bude chovat jako
vyhledávání fráze. V první verzi nesmí hledaný pojem obsahovat uvozovací znak,
případně musí být tomuto znaku předřazeno zpětné lomítko. Ve druhé variantě pak
nesmí uvedený pojem obsahovat ani mezery ani následující speciální znaky, aniž by
byly uvedeny zpětným lomítkem:
`'"<>()[]{},=\*+?
Úkol č. 4
Vyhledání dokumentů obsahujících pojmy vyhovující regulárnímu
výrazu afér*
15
Syntaxe dotazovacího jazyka
Striktní zápis
.many.wildcard( afér* )
Zjednodušený
zápis
afér*
Pro uvedený regulární výraz platí stejné podmínky jako v ostatních případech při hledání
pojmu, který není v uvozovkách. Nesmí tudíž obsahovat mezery a všem speciálním
znakům kromě ? a * musí předcházet zpětné lomítko. Právě výskyt alespoň jednoho
znaku ? a * odlišuje hledání regulárního výrazu od hledání všech tvarů daného pojmu.
Tyto znaky mají následující význam:
? – jeden libovolný znak
* - žádný nebo libovolný počet znaků
Úkol č. 5
Vyhledání dokumentů obsahujících libovolný tvar fráze
mezinárodní aféra s vážením zahrnujícím četnost daných
pojmů.
Striktní zápis
.many.phrase(
.many.stem( mezinárodní ),
.many.stem( aféra )
)
Zjednodušený
zápis
'mezinárodní' 'aféra'
`mezinárodní` `aféra`
'mezinárodní aféra'
`mezinárodní aféra`
mezinárodní aféra
Pro jednotlivé pojmy uvedené ve zjednodušeném dotazu platí stejné podmínky jako
v Úkolu č.1. V prvních čtyřech verzích zjednodušeného zápisu nesmí hledané pojmy
obsahovat uvozovací znak, případně musí být tomuto znaku předřazeno zpětné lomítko.
V poslední uvedené a nejčastěji používané variantě dotazu nesmí uvedený pojem
obsahovat ani mezery ani následující speciální znaky, aniž by byly uvedeny zpětným
lomítkem:
`'"<>()[]{},=\*+?
16
Syntaxe dotazovacího jazyka
Úkol č. 6
Vyhledání dokumentů obsahujících konkrétní tvar fráze
mezinárodními aférami s vážením zahrnujícím četnost daných
pojmů.
Striktní zápis
.many.phrase(
.many.word( mezinárodními ),
.many.word( aférami )
)
Zjednodušený
zápis
"mezinárodními aférami"
"mezinárodními" "aférami"
Pro jednotlivé pojmy uvedené ve zjednodušeném dotazu platí stejné podmínky jako
v Úkolu č. 2. Nesmí obsahovat mezery a uvozovacímu znaku musí předcházet zpětné
lomítko.
Úkol č. 7
Vyhledání dokumentů obsahujících obecnou frázi mezinárod*
aféra ABC s vážením zahrnujícím četnost daných pojmů.
Striktní zápis
.many.phrase(
.many.wildcard( mezinárod* ),
.many.stem( aféra ),
.many.word( ABC )
)
Zjednodušený
zápis
mezinárod* aféra "ABC"
Úkol č. 8
Vyhledání dokumentů vyhovujících uloženému tématu témaaféra.
Striktní zápis
.topic( téma-aféra )
mezinárod* 'aféra' "ABC"
17
Syntaxe dotazovacího jazyka
Zjednodušený
zápis
{téma-aféra}
{"téma-aféra"}
{'téma-aféra'}
{`téma-aféra`}
Jméno tématu může na rozdíl od pojmů obsahovat mezery. V takovém případě ale musí
být celé jméno uzavřené do dvojitých uvozovek, jednoduchých uvozovek nebo zpětných
jednoduchých uvozovek. Je-li součástí jména tématu speciální znak, musí před ním být
uvedeno obrácené lomítko.
Prefix notace operátorů
Prefix notace operátorů je způsob zápisu operátorů a jejich parametrů, při kterém je
nejprve uveden příslušný operátor, a pak v závorce následují čárkou oddělené
parametry. Počet parametrů, které je možné pro daný operátor uvést, závisí na
konkrétním operátoru. Před každým operátorem mohou být uvedeny modifikátory
upravující jeho význam, přičemž nezáleží na jejich pořadí:
# Najde dokumenty, které neobsahují řetězec AFÉRA
.not.many.case.word( AFÉRA )
.many.case.not.word( AFÉRA )
.case.many.not.word( AFÉRA )
# Najde dokumenty obsahující aféra stemované podle pravidel
# českého jazyka
.many.lang/cs.stem( aféra )
lang/cs.many.stem( aféra )
Infix notace operátorů
Infix notace operátorů je dostupná pouze pro některé operátory. Každý z těchto
operátorů má dva parametry a samotný operátor je uveden mezi nimi:
mezinárodní .and aféra
zelený .or modrý
Tento způsob notace operátorů se často využívá společně se zjednodušeným zápisem
dotazů pro pokládání krátkých dotazů:
mezinárodní .and aféra
protože je úspornější než striktní zápis:
18
Syntaxe dotazovacího jazyka
.and( .many.stem( mezinárodní ), .many.stem( aféra ))
Infix notace operátorů umožňuje navíc zkrátit zápis následujících operátorů:
počítač .best notebook
počítač, notebook
obchod .and sklad
obchod and sklad
firma .and .not bankrot
firma not bankrot
start .or cíl
start or cíl
Při vyhodnocování dotazů s infix notací operátorů se zpracovávají jednotlivé části podle
priority příslušného operátoru. Operátory, které mají stejnou prioritu, se zpracovávají
zleva doprava. Následující tabulka uvádí priority jednotlivých operátorů, operátory
s nejvyšší prioritou jsou vyhodnocovány jako první:
Nejvyšší priorita 0
in
1
near, phrase, paragraph, sentence, all, any
2
and, not (zkrácená forma .and .not)
3
best
4
or
Pořadí vyhodnocení jednotlivých operátorů může být změněno uzavřením částí dotazu
do závorek.
Následující příklady uvádějí způsob použití infix notace, přičemž všechny dotazy
uvedené v jednom společném poli vedou vždy ke stejnému výsledku:
škoda or audi or ford
škoda .or audi .or ford
( škoda or audi ) or ford
škoda or ( audi or ford )
Všechny tyto dotazy vyhledají dokumenty, které obsahují alespoň jeden výskyt
některého tvaru jednoho z uvedených pojmů. Protože je zde použit pouze jen jeden typ
19
Syntaxe dotazovacího jazyka
operátoru, nezmění závorky žádným způsobem význam dotazu a je možné je zcela
vynechat. Operátor or je jako většina operátorů dotazovacího jazyka komutativní, a
proto nezáleží ani na pořadí uvedených pojmů v dotazu.
Častěji než operátor or se však používá operátor best. Tyto dva operátory se od sebe
liší pouze ve způsobu vážení nalezených dokumentů. Operátor best zvýhodňuje
dokumenty, které vyhovují více jeho poddotazům, zatímco operátor or zohledňuje pouze
váhu nejlepšího poddotazu:
škoda, audi, ford
škoda .best audi .best ford
Konkrétně to znamená, že dokument, který obsahuje jeden pojem „Škoda“ a jeden
pojem „Audi“ dostane při použití operátoru best vyšší váhu, než dokument, který
obsahuje pouze jeden pojem „Škoda“. Při použití operátoru or bude oběma
dokumentům přiřazena stejná váha.
Operátor best je jedním z nejčastěji používaných operátorů, a proto se jako jeho
zkrácená podoba používá pouze čárka.
škoda and bílá not diesel
škoda .and bílá .and .not diesel
škoda not diesel and bílá
Tyto dotazy vyhledají všechny dokumenty, které obsahují pojem „Škoda“ a pojem „bílá“,
ale neobsahují pojem „diesel“.
Pozor, operátor not, který je uvedený v posledním příkladu, je zkrácený zápis pro
operátor .and a modifikátor .not, který je aplikován na další poddotaz. Tento operátor
není na rozdíl od ostatních komutativní, a proto nelze jeho parametry prohodit bez
změny významu dotazu:
bílá not diesel
diesel not bílá
Koeficient váhy operátorů
Při sestavování dotazu je možné jednotlivým jeho částem přiřadit různé koeficienty váhy
podle jejich důležitosti. Tímto způsobem je možné zcela zásadně ovlivnit konečné řazení
dokumentů v seznamu výsledků.
Koeficienty váhy jsou vždy uváděny jako modifikátory konkrétních operátorů. Jejich
hodnoty se mohou pohybovat v rozmezí od 0.01 do 1.00 a definují faktor, kterým je
vynásobena váha dokumentu po vyhodnocení daného operátoru.
Hodnota koeficientu váhy může být zapsána následujícími způsoby:
1.
20
Desetinné číslo z intervalu (0,1.00> definující konkrétní hodnotu koeficientu
Syntaxe dotazovacího jazyka
2.
Celé číslo z intervalu <1,100> definující procentuální hodnotu koeficientu.
V následujícím příkladu jsou uvedené skupiny shodných dotazů lišících se pouze v jejich
zápisu:
[50]mezinárodní .and [80]aféra
[.5]mezinárodní .and [.8]aféra
[0.5]mezinárodní .and [0.8]aféra
.and( [50].many.stem( mezinárodní ), [80].many.stem( aféra ))
.and( [.5].many.stem( mezinárodní ), [.8].many.stem( aféra ))
.and( [0.5].many.stem( mezinárodní ), [0.8].many.stem( aféra ))
[90]škoda, [50]audi, [30]ford
[.9]škoda, [.5]audi, [.3]ford
[0.9]škoda, [0.5]audi, [0.3]ford
.best( [90]škoda, [50]audi, [30]ford )
.best( [.9]škoda, [.5]audi, [.3]ford )
.best( [0.9]škoda, [0.5]audi, [0.3]ford )
Pojmenované části dotazu
Pojmenovávání částí dotazu slouží ke zjednodušení zápisu dlouhých dotazů, ve kterých
se některé jeho části opakují, a k definování uložených témat, na která je možné se
v dalších dotazech odkazovat. K odkázání se na předdefinované téma nebo na
pojmenovanou část aktuálního dotazu slouží operátor topic, který má jako parametr
jméno daného tématu nebo části dotazu, nebo jeho zjednodušenou formou, uzavřením
jména do složených závorek.
Pojmenování částí dotazu jsou vždy uváděna jako modifikátory konkrétních operátorů,
které tvoří kořen pojmenovaného dotazu. V případě, že je jméno jednoslovné, pak je
možné zapsat ho bez uvozovek přímo do hranatých závorek, přičemž je nutné vložit
zpětné lomítko před každý speciální znak a normální lomítko:
`'"<>()[]{},=\/
Jméno části dotazu může být uvedeno ve dvojitých uvozovkách, jednoduchých
uvozovkách nebo zpětných jednoduchých uvozovkách. V tomto případě je nutné uvést
zpětné lomítko pouze před použitými uvozovkami.
Následující příklad pojmenování dotazu uvádí dvě skupiny zcela shodných dotazů, které
se liší pouze formou zápisu:
[auto].best( škoda, audi )
["auto"].best( škoda, audi )
['auto'].best( škoda, audi )
[`auto`].best( škoda, audi )
[číslo\<5].or( jedna, dvě, tři, čtyři )
21
Syntaxe dotazovacího jazyka
["číslo<5"].or( jedna, dvě, tři, čtyři )
['číslo<5'].or( jedna, dvě, tři, čtyři )
[`číslo<5`].or( jedna, dvě, tři, čtyři )
V následujícím příkladu je pojmenována část dotazu a vzápětí znovu využita, což vede
ke zkrácení zápisu dotazu:
.best(
.and(
.and(
.and(
.and(
)
22
cena, [auto].best( škoda, audi, ford )),
spotřeba, {auto} ),
výbava, {auto} ),
testy, {auto} )
Operátory a modifikátory
Operátory a modifikátory
Operátor all
Popis
Vybere dokumenty, které vyhovují všem dotazům uvedeným jako
parametry operátoru. Na rozdíl od operátoru and přiřadí tento
operátor všem vyhovujícím dokumentům váhu 1.00. Díky tomu je
jeho vyhodnocení ve fulltextovém jádru rychlejší.
Striktní zápis
.all ( dotaz1, …, dotazN )
<all> ( dotaz1, …, dotazN )
Infix notace
dotaz1 .all dotaz2
dotaz1 <all> dotaz2
Modifikátory
many – Změní vážení operátoru. Operátor přiřadí dokumentům
nejmenší váhu vrácenou jeho poddotazy.
order – Je-li tento modifikátor uveden, pak je výsledek hledání
navíc závislý na pořadí jednotlivých poddotazů. Pro všechny
nalezené dokumenty platí, že výskyty poddotazů operátoru se v nich
objevují ve stejném pořadí, jako jsou v zadání dotazu.
Příklady:
.all( modrá, červená, zelená, žlutá )
modrá .all červená .all zelená .all žlutá
.order.all( první, druhý, třetí )
Operátor and, and/w, and/l, and/s, and/c
Popis
Vybere dokumenty, které vyhovují všem dotazům uvedeným jako
parametry operátoru.
Operátor and podporuje několik různých typů vážení dokumentů.
Standardně přiřazuje tento operátor dokumentům nejmenší váhu
vrácenou jeho poddotazy.
Varianta and/c přiřadí všem dokumentům konstantní váhu 1.00,
23
Operátory a modifikátory
stejně jako operátor all.
Varianta and/w vypočítá výslednou váhu na základě skóre všech
poddotazů. Výpočet je založen na stejném algoritmu jako operátor
best.
Varianta and/s zakládá výpočet váhy dokumentu na součtu výskytů
jednotlivých poddotazů.
Varianta and/l využívá algoritmu CLucene pro odvození váhy
dokumentů.
Striktní zápis
.and ( dotaz1, …, dotazN )
.and/w ( dotaz1, …, dotazN )
.and/l ( dotaz1, …, dotazN )
.and/s ( dotaz1, …, dotazN )
.and/c ( dotaz1, …, dotazN )
<and> ( dotaz1, …, dotazN )
<and/w> ( dotaz1, …, dotazN )
<and/l> ( dotaz1, …, dotazN )
<and/s> ( dotaz1, …, dotazN )
<and/c> ( dotaz1, …, dotazN )
Infix notace
dotaz1 and dotaz2
dotaz1 .and dotaz2
dotaz1 <and> dotaz2
Modifikátory
Příklady:
.and( mezinárodní, aféra )
mezinárodní and aféra
.and/w( vlastník, firma )
24
Operátory a modifikátory
Operátor any
Popis
Vybere dokumenty, které vyhovují alespoň jednomu z dotazů
uvedených jako parametry operátoru. Na rozdíl od operátoru or
tento operátor přiřadí všem vyhovujícím dokumentům váhu 1.00.
Díky tomu je jeho vyhodnocení ve fulltextovém jádru výrazně
rychlejší.
Striktní zápis
.any ( dotaz1, …, dotazN )
<any> ( dotaz1, …, dotazN )
Infix notace
dotaz1 .any dotaz2
dotaz1 <any> dotaz2
Modifikátory
many – Změní vážení operátoru tak, že přiřadí dokumentům
nejvyšší váhu vrácenou jeho poddotazy.
Příklady:
.any( modrá, červená, zelená, žlutá )
modrá .any červená .any zelená .any žlutá
.many.any( první, druhý, třetí )
Operátor best
Popis
Vybere dokumenty, které vyhovují alespoň jednomu z dotazů
uvedených jako parametry operátoru. Jednotlivým dokumentům
přiřadí skóre v závislosti na počtu poddotazů, kterým daný dokument
vyhovuje, a na jejich skóre. Nejvyšší váhu tak dostanou dokumenty,
které vyhovují největšímu počtu poddotazů s co možná nejvyšší
váhou.
Striktní zápis
.best ( dotaz1, …, dotazN )
<best> ( dotaz1, …, dotazN )
Infix notace
dotaz1 .best dotaz2
dotaz1 <best> dotaz2
25
Operátory a modifikátory
Zjednodušený
zápis
dotaz1, dotaz2
Modifikátory
-
Příklady:
.best( modrá, červená, zelená, žlutá )
modrá, červená, zelená, žlutá
Operátor contains
Popis
Operátor contains vybere dokumenty, které v daném poli obsahují
uvedenou hodnotu, která může být zadaná bez ohledu na velikost
písmen. Vyhodnocení operátoru se liší v závislosti na tom, zda je
pole tokenizované (tokenizace je vysvětlena v příručce Tovek:
Fulltextové jádro, Příručka administrátora).
Pro tokenizovaná pole se operátor contains vyhodnotí stejně jako
operátor word.
Pro netokenizovaná pole vybere operátor contains dokumenty,
pro které má dané pole uvedenou hodnotu. V tomto případě musí
být zadaná celá hodnota pole, která, v případě že obsahuje mezery,
musí být uzavřena do dvojitých uvozovek, jednoduchých uvozovek
nebo zpětných jednoduchých uvozovek.
Jméno pole nezávislé na velikosti písmen.
Striktní zápis
jméno_pole .contains hodnota
jméno_pole <contains> hodnota
Infix notace
-
Modifikátory
case – Modifikátor case způsobí, že při vyhodnocování bude
brána na zřetel velikost písmen uvedených v hodnotě. To, zda se
opravdu najde pouze přesná podoba hodnot, závisí na konfiguraci
pole, ve kterém se hledá, neboť každé pole nemusí obsahovat
v indexu informace o velikosti písmen ve svých hodnotách.
Příklady:
26
Operátory a modifikátory
oblast .contains "Regionální deníky - Olomoucký a Zlínský kraj"
.case titulek .contains Radnice
Operátor ends
Popis
Operátor ends vybere dokumenty, které v daném poli obsahují
hodnotu, která končí zadaným řetězcem bez ohledu na velikost
písmen. Vyhodnocení operátoru se liší v závislosti na tom, zda je
pole tokenizované (tokenizace je vysvětlena v příručce Tovek:
Fulltextové jádro, Příručka administrátora).
Tento operátor nelze použít pro tokenizovaná pole.
Pro netokenizovaná pole vybere operátor ends dokumenty, pro
které má dané pole hodnotu končící uvedeným řetězcem. V tomto
případě se bere v potaz celá hodnota, a tak zadaný řetězec může
obsahovat i mezery. V takovém případě ale musí být uzavřen do
dvojitých uvozovek, jednoduchých uvozovek nebo zpětných
jednoduchých uvozovek.
Jméno pole je nezávislé na velikosti písmen.
Striktní zápis
jméno_pole .ends hodnota
jméno_pole <ends> hodnota
Infix notace
-
Modifikátory
case – Modifikátor case způsobí, že při vyhodnocování bude
brána na zřetel velikost písmen v uvedeném řetězci. To, zda se
opravdu bude uvažovat pouze přesná podoba řetězce, závisí na
konfiguraci pole, ve kterém se hledá, neboť každé pole nemusí
obsahovat v indexu informace o velikosti písmen ve svých
hodnotách.
Příklady:
titulek .ends nice
.case oblast .ends "Zlínský kraj"
27
Operátory a modifikátory
Operátory field a filter
Popis
Tyto operátory jsou používány spolu s relačními operátory
především při tvorbě témat.
Striktní zápis
.field ( jméno_pole relační_operátor hodnota )
<field> ( jméno_pole relační_operátor hodnota )
.filter ( jméno_pole relační_operátor hodnota )
<filter> ( jméno_pole relační_operátor hodnota )
Infix notace
-
Modifikátory
-
Příklady:
.field( titulek .contains prezident )
.filter( datum > today-1 )
Operátor freetext
Popis
Vyhledá dokumenty na základě uvedeného volného textu a přiřadí
jim váhu podle jejich podobnosti vzhledem k tomuto textu. Volný text
je třeba zadat ve dvojitých uvozovkách, jednoduchých uvozovkách
nebo zpětných jednoduchých uvozovkách a může obsahovat
libovolné znaky, pouze před použitými uvozovkami musí být
uvedeno zpětné lomítko.
Operátor freetext vyextrahuje z textu dotazu nějčastěji se
vyskytující slova a složí z nich strukturovaný dotaz, který vyhledá
dokumenty obsahující co možná nejvíce těchto slov v co nejmenší
vzdálenosti od sebe.
Striktní zápis
.freetext ( "Volný text." )
.freetext ( 'Volný text.' )
.freetext ( `Volný text.` )
<freetext> ( "Volný text." )
<freetext> ( 'Volný text.' )
28
Operátory a modifikátory
<freetext> ( `Volný text.` )
Infix notace
-
Modifikátory
-
Příklady:
.freetext( 'Na Starou radnici láká stálá expozice Obrazy Jana
Pinkavy, malíře starých Hranic.' )
.freetext( "\"Ahoj\", zavolal." )
Operátor in
Popis
Tento operátor slouží k definici pole případně zóny dokumentu, na
kterou bude aplikován příslušný dotaz.
Není-li operátorem in určeno jinak, vyhodnocuje se každý dotaz
proti standardnímu poli obsahujícímu text dokumentu. Toto pole je
uvedeno v konfiguraci indexu.
Operátorem in lze toto pole pro celý nebo část dotazu změnit. Navíc
je možné pomocí operátoru in specifikovat více než jedno pole, ve
kterém se má hledat. V případě, že je takovýchto polí uvedeno více,
budou nalezeny dokumenty, které vyhovují dotazu alespoň v jednom
poli.
Striktní zápis
dotaz .in jméno_pole
dotaz .in (jméno_pole1, …, jméno_poleN)
dotaz <in> jméno_pole
dotaz <in> (jméno_pole1, …, jméno_poleN)
Infix notace
-
Modifikátory
-
Příklady:
.and( pilot, voják ) .in titulek
29
Operátory a modifikátory
.and( pilot, voják ) .in (titulek, doc)
Operátor like
Popis
Tento operátor slouží k vyhledání dokumentů podobných
uvedenému dokumentu. Klíč dokumentu, pokud neobsahuje mezery,
může být uveden bez uvozovek s tím, že každému speciálnímu
znaku předchází zpětné lomítko. V opačném případě je nutné zadat
klíč v dvojitých uvozovkách, jednoduchých uvozovkách nebo
zpětných jednoduchých uvozovkách.
Aktuální verze nepodporuje tento operátor.
Striktní zápis
.like( klíč_dokumentu )
<like>( klíč_dokumentu )
Infix notace
-
Modifikátory
-
Příklady:
.like( 'doc2215890146' )
Operátor matches
Popis
Operátor matches vybere dokumenty, které v daném poli obsahují
hodnotu, která odpovídá uvedené hodnotě. Tato hodnota může být
zadána bez ohledu na velikost písmen. Vyhodnocení operátoru se
liší v závislosti na tom, zda je pole tokenizované (tokenizace je
vysvětlena v příručce Tovek: Fulltextové jádro, Příručka
administrátora).
Tento operátor nelze použít pro tokenizovaná pole.
Pro netokenizovaná pole vybere operátor matches dokumenty, pro
které má dané pole hodnotu odpovídající zadané hodnotě. V tomto
případě musí být zadaná celá hodnota pole, která, v případě že
obsahuje mezery, musí být uzavřena do dvojitých uvozovek,
jednoduchých uvozovek nebo zpětných jednoduchých uvozovek.
30
Operátory a modifikátory
Uvedená hodnota může obsahovat zástupné znaky:
? – jeden libovolný znak
* - žádný nebo libovolný počet znaků.
Při standardní konfiguraci indexu nemohou být zástupné znaky
uvedeny na prvním místě.
Jméno pole je nezávislé na velikosti písmen.
Striktní zápis
jméno_pole .matches hodnota
jméno_pole <matches> hodnota
Infix notace
-
Modifikátory
case – Modifikátor case způsobí, že při vyhodnocování bude
brána na zřetel velikost písmen uvedených v hodnotě. To, zda se
opravdu najde pouze přesná podoba hodnot, závisí na konfiguraci
pole, ve kterém se hledá, neboť každé pole nemusí obsahovat
v indexu informace o velikosti písmen ve svých hodnotách.
Příklady:
oblast .matches televi*
.case titulek .matches Člověk*
Operátor near, near/w, near/c, near/m
Popis
Tento operátor vybere dokumenty, které vyhovují všem jeho
poddotazům a jejichž výskyty se nacházejí do určité maximální
vzdálenosti od sebe.
U každé z variant tohoto operátoru je možné zadat maximální
vzdálenost, která se má brát v potaz. Tato vzdálenost se udává
celým číslem a znamená počet slov. V případě, že není žádná
maximální vzdálenost uvedena, použije se nastavení daného
indexu, přičemž standardní hodnota je 1024.
Operátor near podporuje několik různých typů vážení dokumentů.
Není-li žádný typ vážení uvedený, pak je chování operátoru řízeno
konfigurací a standardně váží jako jeho varianta near/m.
Varianta near/m odvozuje výpočet váhy dokumentu od nejmenší
vzdálenosti výskytů všech jeho poddotazů, přičemž čím menší je
31
Operátory a modifikátory
tato vzdálenost, tím vyšší je přiřazená váha.
Varianta near/c přiřadí všem dokumentům konstantní váhu 1.00.
Tato varianta je, co se týká vyhodnocování, nejefektivnější.
Varianta near/w vypočítá výslednou váhu na základě všech
vzdáleností výskytů všech poddotazů. Tímto způsobem je výsledná
váha ovlivněna i celkovým počtem výskytů poddotazů v dokumentu.
Striktní zápis
.near ( dotaz1, …, dotazN )
.near/m ( dotaz1, …, dotazN )
.near/c ( dotaz1, …, dotazN )
.near/w ( dotaz1, …, dotazN )
.near/číslo ( dotaz1, …, dotazN )
.near/mčíslo ( dotaz1, …, dotazN )
.near/cčíslo ( dotaz1, …, dotazN )
.near/wčíslo ( dotaz1, …, dotazN )
<near> ( dotaz1, …, dotazN )
<near/m> ( dotaz1, …, dotazN )
<near/c> ( dotaz1, …, dotazN )
<near/w> ( dotaz1, …, dotazN )
<near/číslo> ( dotaz1, …, dotazN )
<near/mčíslo> ( dotaz1, …, dotazN )
<near/cčíslo> ( dotaz1, …, dotazN )
<near/wčíslo> ( dotaz1, …, dotazN )
infix notace
dotaz1 .near dotaz2
dotaz1 .near/[mcw][číslo] dotaz2
dotaz1 <near> dotaz2
dotaz1 <near/[mcw][číslo]> dotaz2
Modifikátory
Příklady:
32
order – Tento modifikátor způsobí, že se budou brát v úvahu pouze
výskyty v dokumentu, které odpovídají pořadí poddotazů.
Operátory a modifikátory
.near( firma, krach )
firma .near krach
.order.near/w5( státní, organizace )
státní .order.near/w5 organizace
Operátor or, or/w, or/l, or/s, or/c
Popis
Vybere dokumenty, které vyhovují alespoň jednomu dotazu
uvedenému jako parametr operátoru.
Operátor or podporuje několik různých typů vážení dokumentů.
Standardně přiřazuje tento operátor dokumentům nejvyšší váhu
vrácenou jeho poddotazy.
Varianta or/c přiřadí všem dokumentům konstantní váhu 1.00,
stejně jako operátor any, a je co do zpracování výrazně rychlejší
než ostatní varianty tohoto operátoru.
Varianta or/w vypočítá výslednou váhu na základě skóre všech
poddotazů. Výpočet je založen na stejném algoritmu jako operátor
best.
Varianta or/s zakládá výpočet váhy dokumentu na součtu výskytů
jednotlivých poddotazů.
Varianta or/l využívá algoritmu CLucene pro odvození váhy
dokumentů.
Striktní zápis
.or ( dotaz1, …, dotazN )
.or/w ( dotaz1, …, dotazN )
.or/l ( dotaz1, …, dotazN )
.or/s ( dotaz1, …, dotazN )
.or/c ( dotaz1, …, dotazN )
<or> ( dotaz1, …, dotazN )
<or/w> ( dotaz1, …, dotazN )
<or/l> ( dotaz1, …, dotazN )
<or/s> ( dotaz1, …, dotazN )
<or/c> ( dotaz1, …, dotazN )
33
Operátory a modifikátory
Infix notace
dotaz1 or dotaz2
dotaz1 .or dotaz2
dotaz1 <or> dotaz2
Modifikátory
-
Příklady:
.or( modrá, oranžová )
modrá or oranžová
.or/w( spořitelna, banka )
Operátor paragraph
Popis
Tento operátor vybere dokumenty, které vyhovují všem jeho
poddotazům a jejichž výskyty se nacházejí do konfigurací
definované vzdálenosti od sebe. Standardně je tato vzdálenost 64
slov.
Operátor paragraph je tedy ve standardním případě shodný
s operátorem near/64.
Striktní zápis
.paragraph ( dotaz1, …, dotazN )
<paragraph> ( dotaz1, …, dotazN )
Infix notace
dotaz1 .paragraph dotaz2
dotaz1 <paragraph> dotaz2
Modifikátory
order – Tento modifikátor způsobí, že se budou brát v úvahu pouze
výskyty v dokumentu, které odpovídají pořadí poddotazů.
Příklady:
.paragraph( firma, krach )
firma .paragraph krach
34
Operátory a modifikátory
Operátor phrase
Popis
Operátor phrase najde všechny dokumenty obsahující danou frázi.
Jednotlivá slova hledané fráze jsou specifikována poddotazy
operátoru a je možné definovat více než jedno slovo pro konkrétní
pozici, např. pomocí operátoru wildcard, přímým výčtem pomocí
operátoru or, určením rozsahu pomocí range a další.
Striktní zápis
.phrase ( dotaz1, …, dotazN )
<phrase> ( dotaz1, …, dotazN )
Infix zápis
dotaz1 .phrase dotaz2
dotaz1 <phrase> dotaz2
Zjednodušený
zápis
Zjednodušený zápis lze využít, jsou-li všechny poddotazy pouze
typu stem, word nebo wildcard. V tomto případě stačí napsat
jejich zkrácené podoby za sebou. Poddotazy se stejným typem lze
zahrnout pod jedny společné uvozovací znaky:
"škola" "hrou" je stejné jako "škola hrou"
'vlastník' 'firma' je stejné jako 'vlastník firma'
Modifikátory
many – Tento modifikátor způsobí, že nalezeným dokumentům bude
přiřazena váha na základě počtu výskytů fráze.
Příklady:
.phrase( školní, osnova )
školní .phrase osnova
školní osnova
.phrase( "škola", "hrou" )
"škola" "hrou"
"škola hrou"
.phrase( nový, vlastník, .or( vozidlo, firma))
Operátor range
Popis
Operátor range najde všechny dokumenty obsahující hodnotu
35
Operátory a modifikátory
z uvedeného rozsahu včetně hraničních hodnot v aktuálním poli.
Porovnávání hodnot pole závisí na typu pole a je shodné s operátory
<= a >=.
Striktní zápis
.range( hodnota_od, hodnota_do )
<range>( hodnota_od, hodnota_do )
Infix zápis
-
Modifikátory
case - Modifikátor case způsobí, že při vyhodnocování bude brána
na zřetel velikost písmen v uvedeném pojmu. Toto se týká pouze
dotazů vztahujících se k textovým polím.
Příklady:
.range( today-1, today )
.range( a, azzzzzzz )
Operátor sentence
Popis
Tento operátor vybere dokumenty, které vyhovují všem jeho
poddotazům a jejichž výskyty se nacházejí do konfigurací
definované vzdálenosti od sebe. Standardně je tato vzdálenost 16
slov.
Operátor sentence je tedy ve standardním případě shodný
s operátorem near/16.
Striktní zápis
.sentence ( dotaz1, …, dotazN )
<sentence> ( dotaz1, …, dotazN )
Infix notace
dotaz1 .sentence dotaz2
dotaz1 <sentence> dotaz2
Modifikátory
Příklady:
36
order – Tento modifikátor způsobí, že se budou brát v úvahu pouze
výskyty v dokumentu, které odpovídají pořadí poddotazů.
Operátory a modifikátory
.sentence( vlastník, firma )
vlastník .sentence firma
Operátor soundex
Popis
Operátor soundex umožňuje vyhledat dokumenty obsahující
podobně znějící pojmy jako uvedený pojem v jakémkoli jejich
mluvnickém tvaru. Určení vyhledaných tvarů závisí na aktuálním
nastaveném jazyce dotazu, přičemž v případě, že daný jazyk
nepodporuje tuto funkcionalitu, budou se hledat pouze mluvnické
tvary zadaného pojmu.
Není-li v dotazu určeno jinak, používá se jazyk indexu, ve kterém se
dotaz vyhodnocuje. V případě, že se daný dotaz vyhodnocuje proti
více indexům najednou, pak se podobně znějící pojmy a jejich
mluvnické tvary určí pro každý index zvlášť. Dotazovací jazyk
umožňuje přiřadit konkrétní jazyk určité části dotazu pomocí
modifikátoru lang/id. Nastavení jazyka pomocí tohoto modifikátoru
má přednost oproti nastavení indexu.
Pojem uvedený jako parametr operátoru nesmí obsahovat mezery, a
jestliže není uzavřený ve dvojitých uvozovkách, jednoduchých
uvozovkách nebo zpětných jednoduchých uvozovkách, musí všem
speciálním znakům předcházet zpětné lomítko:
`'"<>()[]{},=\/
Tento operátor přiřadí každému nalezenému dokumentu váhu 1.00.
Striktní zápis
.soundex( hodnota )
<soundex>( hodnota )
Infix notace
-
Modifikátory
many – Tento modifikátor způsobí, že nalezeným dokumentům bude
přiřazena váha na základě počtu výskytů hledaných pojmů v daném
dokumentu.
Příklady:
.many.soundex( podíl )
.soundex( firma )
37
Operátory a modifikátory
Operátor starts
Popis
Operátor starts vybere dokumenty, které v daném poli obsahují
hodnotu, která začíná zadaným řetězcem bez ohledu na velikost
písmen. Vyhodnocení operátoru se liší v závislosti na tom, zda je
pole tokenizované (tokenizace je vysvětlena v příručce Tovek:
Fulltextové jádro, Příručka administrátora).
Tento operátor nelze použít pro tokenizovaná pole.
Pro netokenizovaná pole vybere operátor starts dokumenty, pro
které má dané pole hodnotu začínající uvedeným řetězcem. V tomto
případě se bere v potaz celá hodnota, a tak zadaný řetězec může
obsahovat i mezery. V takovém případě ale musí být uzavřen do
dvojitých uvozovek, jednoduchých uvozovek nebo zpětných
jednoduchých uvozovek.
Jméno pole nezávislé na velikosti písmen.
Striktní zápis
jméno_pole .starts hodnota
jméno_pole <starts> hodnota
Infix notace
-
Modifikátory
case – Modifikátor case způsobí, že při vyhodnocování bude
brána na zřetel velikost písmen v uvedeném řetězci. To, zda se
opravdu bude uvažovat pouze přesná podoba řetězce, závisí na
konfiguraci pole, ve kterém se hledá, neboť každé pole nemusí
obsahovat v indexu informace o velikosti písmen ve svých
hodnotách.
Příklady:
oblast .starts "Regionální deníky"
.case titulek .starts Ors
Operátor stem
Popis
38
Operátor stem umožňuje vyhledat dokumenty obsahující uvedený
pojem v jakémkoli jeho mluvnickém tvaru. Určení vyhledaných tvarů
závisí na aktuálním nastaveném jazyce dotazu. Není-li v dotazu
určeno jinak, používá se jazyk indexu, ve kterém se dotaz
vyhodnocuje. V případě, že se daný dotaz vyhodnocuje proti více
Operátory a modifikátory
indexům najednou, pak se mluvnické tvary pojmu určí pro každý
index zvlášť. Dotazovací jazyk umožňuje zadat konkrétní jazyk pro
určitou část dotazu pomocí modifikátoru lang/id. Nastavení jazyka
pomocí tohoto modifikátoru má přednost oproti nastavení indexu.
Pojem uvedený jako parametr operátoru nesmí obsahovat mezery, a
jestliže není uzavřený ve dvojitých uvozovkách, jednoduchých
uvozovkách nebo zpětných jednoduchých uvozovkách, pak musí
všem speciálním znakům předcházet zpětné lomítko:
`'"<>()[]{},=\/
Tento operátor přiřadí každému nalezenému dokumentu váhu 1.00.
Striktní zápis
.stem( hodnota )
<stem>( hodnota )
Infix notace
-
Zjednodušený
zápis
Zjednodušený zápis tohoto operátoru automaticky uplatňuje
modifikátor many a váží dokumenty podle počtu výskytů daného
pojmu. V případě první varianty nesmí daná hodnota navíc
obsahovat znaky * a ?, které jsou indikátorem zjednodušeného
zápisu pro operátor wildcard:
hodnota
`hodnota`
'hodnota'
Modifikátory
many – Tento modifikátor způsobí, že nalezeným dokumentům bude
přiřazena váha na základě počtu výskytů uvedeného pojmu a jeho
mluvnických tvarů.
Příklady:
.many.stem( vlastník )
vlastník
.stem( firma )
39
Operátory a modifikátory
Operátor substring
Popis
Operátor substring vybere dokumenty, které v daném poli
obsahují hodnotu, která obsahuje zadaný řetězec bez ohledu na
velikost písmen. Vyhodnocení operátoru se liší v závislosti na tom,
zda je pole tokenizované (tokenizace je vysvětlena v příručce Tovek:
Fulltextové jádro, Příručka administrátora).
Tento operátor nelze použít pro tokenizovaná pole.
Pro netokenizovaná pole vybere operátor substring dokumenty,
pro které má dané pole hodnotu obsahující uvedený řetězec.
V tomto případě se bere v potaz celá hodnota, a tak zadaný řetězec
může obsahovat i mezery. V takovém případě ale musí být uzavřen
do dvojitých uvozovek, jednoduchých uvozovek nebo zpětných
jednoduchých uvozovek.
Jméno pole nezávislé na velikosti písmen.
Striktní zápis
jméno_pole .substring hodnota
jméno_pole <substring> hodnota
Infix notace
-
Modifikátory
case – Modifikátor case způsobí, že při vyhodnocování bude
brána na zřetel velikost písmen v uvedeném řetězci. To, zda se
opravdu bude uvažovat pouze přesná podoba řetězce, závisí na
konfiguraci pole, ve kterém se hledá, neboť každé pole nemusí
obsahovat v indexu informace o velikosti písmen ve svých
hodnotách.
Příklady:
oblast .substring "Olomoucký a Zlínský"
.case titulek .substring hotov
Operátor thesaurus
Popis
40
Operátor thesaurus umožňuje vyhledat dokumenty obsahující
daný pojem nebo jeho příbuzné pojmy v jakémkoli jejich mluvnickém
tvaru. Určení vyhledaných tvarů závisí na aktuálním nastaveném
jazyce dotazu, přičemž v případě, že pro daný jazyk nejsou
k dispozici příslušné slovníky, budou se hledat pouze mluvnické
Operátory a modifikátory
tvary zadaného pojmu.
Není-li v dotazu určeno jinak, používá se jazyk indexu, ve kterém se
dotaz vyhodnocuje. V případě, že se daný dotaz vyhodnocuje proti
více indexům najednou, pak se příbuzné pojmy a jejich mluvnické
tvary určí pro každý index zvlášť. Dotazovací jazyk umožňuje zadat
konkrétní jazyk pro určitou část dotazu pomocí modifikátoru
lang/id. Nastavení jazyka pomocí tohoto modifikátoru má
přednost oproti nastavení indexu.
Pojem uvedený jako parametr operátoru nesmí obsahovat mezery, a
jestliže není uzavřený ve dvojitých uvozovkách, jednoduchých
uvozovkách nebo zpětných jednoduchých uvozovkách, pak musí
všem speciálním znakům předcházet zpětné lomítko:
`'"<>()[]{},=\/
Tento operátor přiřadí každému nalezenému dokumentu váhu 1.00.
Striktní zápis
.thesaurus( hodnota )
<thesaurus>( hodnota )
Infix notace
-
Modifikátory
many – Tento modifikátor způsobí, že nalezeným dokumentům bude
přiřazena váha na základě počtu výskytů hledaných pojmů v daném
dokumentu.
Příklady:
.many.thesaurus( ředitel )
.thesaurus( "podíl" )
Operátor topic
Popis
Tento operátor vyhledá dokumenty na základě uloženého tématu
nebo lokálně pojmenované části dotazu. Parametr operátoru uvádí
jméno tématu, které se má na místě operátoru vyhodnotit.
V případě, že jméno tématu neobsahuje mezery, může být uvedeno
bez dvojitých uvozovek, jednoduchých uvozovek nebo zpětných
jednoduchých uvozovek, ale každému speciálnímu znaku musí
předcházet zpětné lomítko.
`'"<>()[]{},=\/
41
Operátory a modifikátory
Témata, jejichž jména obsahují mezeru, musí být uvedena
ve dvojitých uvozovkách, jednoduchých uvozovkách nebo zpětných
jednoduchých uvozovkách.
Lokálně pojmenované části mají v případě konfliktu jmen
s uloženými tématy přednost.
Jméno uloženého tématu lze napsat ve dvou podobách. Zkrácená
verze obsahuje pouze jméno tématu, plná verze se skládá ze jména
sady, do kterého téma patří, a vlastního jména tématu:
sada:jméno_tématu
Tímto způsobem lze odlišit od sebe témata z různých sad se
stejným jménem. V rámci jedné sady témat musí mít každé téma
jednoznačné pojmenování.
Striktní zápis
.topic( jméno_tématu )
<topic>( jméno_tématu )
Infix notace
-
Zjednodušený
zápis
{ jméno_tématu }
Modifikátory
-
Příklady:
.topic ( korupce )
{ korupce }
Operátor typo/n
Popis
Operátor typo umožňuje vyhledat dokumenty obsahující pojmy,
které se liší od zadaného pojmu maximálně o zadaný počet chyb.
Chybou se zde rozumí změna týkající se jedno písmena, tj. záměna
písmena za jiné, vynechání písmena anebo vložení jiného písmena.
Standardně se nebere v potaz velikost písmen.
Operátor typo lze použít i bez uvedení akceptovaného rozdílu, pak
se jeho vyhodnoceni řídí konfigurací indexu, kde je standardně
nastaven rozdíl 2 překlepů.
Pojem uvedený jako parametr operátoru nesmí obsahovat mezery, a
42
Operátory a modifikátory
jestliže není uzavřený ve dvojitých uvozovkách, jednoduchých
uvozovkách nebo zpětných jednoduchých uvozovkách, pak musí
všem speciálním znakům předcházet zpětné lomítko:
`'"<>()[]{},=\/
Tento operátor přiřadí každému nalezenému dokumentu váhu 1.00.
Striktní zápis
.typo( hodnota )
.typo/číslo( hodnota )
<typo>( hodnota )
<typo/číslo>( hodnota )
Infix notace
-
Modifikátory
many – Tento modifikátor způsobí, že nalezeným dokumentům bude
přiřazena váha na základě počtu výskytů hledaných pojmů v daném
dokumentu.
case - Modifikátor case způsobí, že při vyhodnocování bude brána
na zřetel velikost písmen v uvedeném řetězci.
Příklady:
.many.typo( ředidel )
.typo/2( "fimra" )
Operátor wildcard
Popis
Operátor wildcard umožňuje vyhledat dokumenty obsahující
pojmy, které vyhovují zadanému regulárnímu výrazu.
Pojem uvedený jako parametr operátoru nesmí obsahovat mezery, a
jestliže není uzavřený ve dvojitých uvozovkách, jednoduchých
uvozovkách nebo zpětných jednoduchých uvozovkách, musí všem
speciálním znakům předcházet zpětné lomítko:
`'"<>()[]{},=\/
Dotazovací jazyk podporuje v regulárních výrazech následující dva
zástupné znaky, které se při standardní konfiguraci fulltextového
jádra nesmí vyskytovat na první pozici:
? – jeden libovolný znak
43
Operátory a modifikátory
* - žádný nebo libovolný počet znaků.
Tento operátor přiřadí každému nalezenému dokumentu váhu 1.00.
Striktní zápis
.wildcard( regulární_výraz )
<wildcard>( regulární_výraz )
Infix notace
-
Zjednodušený
zápis
Uvedený regulární výraz musí obsahovat alespoň jeden znak * nebo
?. V opačném případě bude dotaz považován za zjednodušený
zápis operátoru stem. Zjednodušený zápis automaticky přidává
k uvedenému dotazu modifikátor many.
regulární_výraz
Modifikátory
many – Tento modifikátor způsobí, že nalezeným dokumentům bude
přiřazena váha na základě počtu výskytů hledaných pojmů v daném
dokumentu.
case - Modifikátor case způsobí, že při vyhodnocování bude brána
na zřetel velikost písmen v uvedeném řetězci.
Příklady:
.many.wildcard( automo* )
automo*
.case.wildcard ( "stro?" )
Operátor word
Popis
Operátor word vyhledá dokumenty obsahující daný pojem pouze
v uvedené podobě s tím, že standardně nejsou rozlišována velká a
malá písmena.
Pojem uvedený jako parametr operátoru nesmí obsahovat mezery, a
jestliže není uzavřený ve dvojitých uvozovkách, jednoduchých
uvozovkách nebo zpětných jednoduchých uvozovkách, pak musí
všem speciálním znakům předcházet zpětné lomítko:
`'"<>()[]{},=\/
Tento operátor přiřadí každému nalezenému dokumentu váhu 1.00.
44
Operátory a modifikátory
Striktní zápis
.word( přesný_výraz )
<word>( přesný_výraz )
Infix notace
-
Zjednodušený
zápis
Zjednodušený zápis automaticky přidává modifikátor many
k uvedenému dotazu.
"přesný_výraz"
Modifikátory
many – Tento modifikátor způsobí, že nalezeným dokumentům bude
přiřazena váha na základě počtu výskytů hledaného pojmu v daném
dokumentu.
Case - Modifikátor case způsobí, že při vyhodnocování bude brána
na zřetel velikost písmen v uvedeném pojmu.
Příklady:
.many.word( autem )
"autem"
.many.case.word( Stát )
Operátory !=, <, <=, =, >, >=
Popis
Tyto operátory slouží k vyhledání dokumentů, které v uvedeném poli
obsahují hodnotu vyhovující dané relaci.
Chování těchto operátorů se liší podle typu pole, ve kterém se hledá.
Tyto operátor nelze použít pro tokenizovaná pole.
Pro netokenizovaná pole, která obsahují textové hodnoty, vyberou
tyto operátory dokumenty, pro které má dané pole hodnotu
vyhovující uvedené relaci. V tomto případě se bere v potaz celá
hodnota pole, a tak zadaný parametr může obsahovat i mezery.
V takovém případě ale musí být uzavřen do dvojitých uvozovek,
jednoduchých uvozovek nebo zpětných jednoduchých uvozovek.
Pro pole obsahující datum se zadaný parametr nejprve převede do
interního formátu, na jehož základě jsou dokumenty vyhledány.
Datum může být uvedeno v jednom z následujících formátů
(podtržítko = mezera ./,- ):
45
Operátory a modifikátory
YYYYMMDD
MON_DD_YYYY
YYYY_MM_DD
DD_MM_YYYY
(YYYY = rok, MM = měsíc, DD = den, MON = anglické jméno měsíce
nebo jeho třípísmenná zkratka)
Hodnotu data lze navíc definovat relativně k aktuálnímu dni tím, že
se uvede v následující podobě:
today
today-počet_dní
"today - počet_dní"
Pro pole obsahující časové značky, tj. data s upřesněním času
s rozlišením na sekundy, se tyto operátory chovají stejně, jako pro
pole obsahující pouze datum. Akceptované jsou hodnoty skládající
se z data následované časovým údajem v následujícím formátu:
HHMMSS
HH:MM:SS
(HH = hodina, MM = minuta, SS = sekunda)
Zadání data bez uvedení času znamená v tomto případě interval
zahrnující celý den.
today
today-počet_dní
"today - počet_dní"
now
now-počet_dní
"now - počet_dní"
now-počet_hodinh
"now - počet_hodin h"
Vyhrazená slovo today a now je možné konfiguračně na straně
fulltextového jádra doplnit o další varianty. Slovo today označuje
aktuální den, now aktuální den a čas.
Také pro číselná pole se zadaná hodnota nejprve převede do
interního formátu tak, aby se vyhodnotila číselně a ne řetězcově.
46
Operátory a modifikátory
Jméno pole je nezávislé na velikosti písmen.
Tento operátor přiřadí každému nalezenému dokumentu váhu 1.00.
jméno_pole != hodnota
jméno_pole < hodnota
jméno_pole <= hodnota
jméno_pole = hodnota
jméno_pole >= hodnota
jméno_pole > hodnota
Infix notace
-
Modifikátory
case - Modifikátor case způsobí, že při vyhodnocování bude brána
na zřetel velikost písmen v uvedeném pojmu. Toto se týká pouze
dotazů vztahujících se k textovým polím.
Příklady:
datum = today
cas > "now – 1h"
cas > now–1h
zdroj != noviny
Modifikátor case
Tento modifikátor je platný před většinou pojmových operátorů a způsobí, že se bere
v potaz velikost písmen zadaných v parametru dotazu.
.case.word( Stát )
Modifikátor many
Tento modifikátor mění způsob vážení dokumentů u operátorů, které standardně
přiřazují pouze váhu 1.00, když daný dokument vyhovuje. Uvedením tohoto modifikátoru
se při vážení bere v potaz počet výskytů hledaných pojmů v dokumentu; čím více se jich
v dokumentu nachází, tím vyšší je jeho váha.
47
Operátory a modifikátory
.many.stem( auto )
Modifikátor order
Modifikátor order nachází uplatnění především u pozičních operátorů. Díky jemu získá
pořadí poddotazů význam a daný operátor vyhledává pouze dokumenty, ve kterých se
poddotazy vyskytují v uvedeném pořadí.
.order.near/1( pan, prezident )
Modifikátor not
Tento modifikátor neguje význam dotazu, na který je aplikován. Negovaný dotaz vrátí
všechny dokumenty, které původnímu dotazu nevyhovují. Tyto dokumenty mají skóre
1.00. Při použití negovaných dotazů se nepodsvěcují hledané pojmy.
Tento modifikátor je aplikovatelný na každý operátor.
.not.and( firma, krach )
Modifikátor lang/id
Modifikátor lang/id určuje, podle jakých jazykových pravidel se budou zpracovávat
pojmové operátory v dotaze, na který byl aplikován. Id představuje dvoupísmennou
zkratku jazyka.
Tento modifikátor je aplikovatelný na každý operátor.
.lang/cs.and( meeting, feedback )
48

Podobné dokumenty

Slidy k 4. přednášce

Slidy k 4. přednášce počítače nebo počítačové sítě (připojené do internetu) ƒ posloupnost několika částí oddělených tečkami ƒ seřazeny podle obecnosti ƒ poslední část ― doména nejvyššího řádu (TLD)

Více

Tovek Tools

Tovek Tools Vyhledávání probíhá ve vybraných zdrojích na základě položeného dotazu, ve kterém lze pomocí sofistikovaného dotazovacího jazyka přesně specifikovat hledané. Z textu mohou být extrahovány různé ent...

Více

Popis služby WebEx

Popis služby WebEx Call-back: Účastníci se mohou připojit do konferenčního setkání tím, že systém Webex zavolá na číslo, které účastníci zadali při připojení do konference.

Více

Lingvistické aplikace

Lingvistické aplikace • segmentace na věty • tokenizace • spell-checking • lemmatizace • Part-of-speech tagging

Více