Tovek: Dotazovací jazyk Tovek Tools 7.1 a vyšší Tovek Server 6.4 a vyšší
© Copyright TOVEK, spol. s r.o. | www.tovek.cz
Tovek Dotazovací jazyk
Tovek Tools 7.1 a vyšší, Tovek Server 6.4 a vyšší
Copyright Copyright © 1996 - 2013 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 Parsery - přehled..............................................................................................................................7 Jednoduchý dotaz ...........................................................................................................................8 Úvod do dotazovacího jazyka .......................................................................................................8 Základní pojmy a jejich vztah k dotazovacímu jazyku ..............................................................8 Přehled operátorů.....................................................................................................................9 Přehled modifikátorů ..............................................................................................................13 Syntaxe dotazovacího jazyka ......................................................................................................14 Striktní zápis dotazů ...............................................................................................................14 Zjednodušený zápis dotazů ....................................................................................................15 Prefix notace operátorů ..........................................................................................................19 Infix notace operátorů.............................................................................................................19 Jména polí ..............................................................................................................................22 Koeficient váhy operátorů .......................................................................................................22 Pojmenované části dotazu .....................................................................................................22 Operátory ....................................................................................................................................23 Operátor all.............................................................................................................................23 Operátor and, and/w, and/l, and/s, and/c ...............................................................................24 Operátor any ..........................................................................................................................25 Operátor best .........................................................................................................................26 Operátor contains ...................................................................................................................27 Operátor ends ........................................................................................................................27 Operátor entity........................................................................................................................28 Operátory field a filter .............................................................................................................30 Operátor freetext ....................................................................................................................30 Operátor in .............................................................................................................................31 Operátor like ...........................................................................................................................32 Operátor matches...................................................................................................................32 Operátor near, near/w, near/c, near/m ...................................................................................33 Operátor or, or/w, or/l, or/s, or/c .............................................................................................35 Operátor paragraph ................................................................................................................36 Operátor phrase .....................................................................................................................37 Operátor range, range/n, range/d, range/t..............................................................................38 Operátor sentence..................................................................................................................38 Operátor soundex...................................................................................................................39 Operátor starts .......................................................................................................................40 Operátor stem, beststem, multistem.......................................................................................41 Operátor substring..................................................................................................................42 Operátor thesaurus ................................................................................................................43 Operátor topic, concept ..........................................................................................................44 Operátor typo/n ......................................................................................................................45 Operátor wildcard ...................................................................................................................46 Operátor word ........................................................................................................................47 Operátory !=, <, <=, =, >, >= ..................................................................................................48 5
Obsah
Modifikátory ................................................................................................................................ 51 Modifikátor case .................................................................................................................... 51 Modifikátor count/n ................................................................................................................ 52 Modifikátor lang/id ................................................................................................................. 52 Modifikátor many ................................................................................................................... 52 Modifikátor not ....................................................................................................................... 53 Modifikátor order.................................................................................................................... 53 Volný text ....................................................................................................................................... 54 Boolovský dotaz ............................................................................................................................ 55 Internetový parser ......................................................................................................................... 56 Přehled ....................................................................................................................................... 56 Pojmy ......................................................................................................................................... 56 Pole ............................................................................................................................................ 56 Modifikátory pojmů ..................................................................................................................... 56 Hledání pomocí zástupných znaků ........................................................................................ 57 Konfúzní hledání.................................................................................................................... 57 Poziční hledání ...................................................................................................................... 57 Hledání v rozmezí .................................................................................................................. 58 Posílení váhy pojmu .............................................................................................................. 58 Boolovské operátory ................................................................................................................... 58 OR ......................................................................................................................................... 59 AND ....................................................................................................................................... 59 + ............................................................................................................................................ 59 NOT ....................................................................................................................................... 59 - ............................................................................................................................................. 60 Sdružování poddotazů................................................................................................................ 60 Sdružování klauzulí .................................................................................................................... 60 Pokročilý dotaz .............................................................................................................................. 61
6
Parsery - přehled
Parsery - přehled Parser dotazů určuje, jaký styl se bude používat pro zadání dotazu, resp. jak bude s textem zadaným do dotazu zacházeno při zpracování dotazu. Možné jsou tyto parsery: TS_QueryParser_Simple - Jednoduchý dotaz (viz str. 8) TS_QueryParser_FreeText - Volný text (viz str. 54) TS_QueryParser_Boolean - Boolovský dotaz (viz str. 55) TS_QueryParser_Internet - Internetový parser (viz str. 56) TS_QueryParser_Advanced - Pokročilý dotaz (viz str. 61) Nejpoužívanější je typ jednoduchý dotaz, který je také v této příručce nejobsáhleji popsán. Také pokud je zmiňován dotazovací jazyk, je myšlen jazyk používaný parserem typu jednoduchý dotaz.
7
Jednoduchý dotaz
Jednoduchý dotaz Úvod do dotazovacího jazyka Tato část popisuje dotazovací jazyk pro parser typu jednoduchý dotaz, 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
8
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.
infix notace
Zápis dotazu, při kterém se operátor nachází mezi jeho parametry.
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.
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>.
modifikátor
Upravuje význam modifikované části dotazu.
operátor
Operátory slouží k definici základních dotazů nebo spojují několik dotazů dohromady a definují podmínky jejich vyhodnocení.
poddotaz
Dotaz, uvedený jako parametr operátoru.
pojem
Konkrétní slovo nebo množina slov, které se hledají nebo které slouží jako parametry nadřízeného operátoru.
pojmenování dotazu
Pojmenování dotazu nebo jeho částí slouží k definování témat, případně ke zjednodušení zápisu dotazu.
Jednoduchý dotaz
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.
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.
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 *+?.
váha
Váha je číselný údaj definující relevanci dokumentu k danému dotazu.
zjednodušený zápis dotazu
Zápis dotazu, při kterém je možné vynechat pojmové operátory.
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. word
Slouží k vyhledání dokumentů, které obsahují jeden nebo více výskytů daného pojmu v zadaném tvaru.
9
Jednoduchý dotaz
stem
Umožňuje vyhledat dokumenty obsahující uvedený pojem v jakémkoli jeho mluvnickém tvaru. Jeho přesné chování je určeno konfigurací fulltextového jádra. Chová se buď jako operátor beststem a nebo jako operátor multistem.
beststem
Hledá dokumenty obsahující slova, která jsou jazykovým modulem převededa na stejný základní tvar jako zadané slovo. Vrací-li tento modul více než jeden základní tvar, pak tento operátor vybere pouze ten tvar, který je zadanému slovu nejpodobnější.
multistem
Hledá dokumenty obsahující slova, která jsou jazykovým modulem převededa na jakýkoliv ze základních tvarů vypočítaných pro zadané slovo.
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ů:
10
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
Jednoduchý dotaz
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ší.
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ů.
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: contains
Umožňuje nalézt dokumenty, které v daném poli obsahují daný řetězec. 11
Jednoduchý dotaz
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
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:
12
topic, concept
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.
in
Operátor in definuje v jaké části dokumentu, případně v jakém poli se má dotaz vyhodnocovat.
Jednoduchý dotaz
like
Najde dokumenty podobné uvedenému dokumentu.
entity
Najde dokumenty obsahující daný typ entit případně konkrétní entitu.
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 jednotlivých písmen.
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.
count/n
Určuje minimální nebo maximální počet výskytů daného poddotazu v dokumentu.
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.
13
Jednoduchý dotaz
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
( 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 / 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><word>(aféra)
14
Jednoduchý dotaz
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` )
Pokud je pojem uzavřen v uvozovkách, musí se zpětné lomítko použít pouze, pokud pojem obsahuje tyto uvozovky nebo zpětné lomítko. Např. pro pojem a\b“c lze dotaz zapsat takto: .many.word( "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 15
Jednoduchý dotaz
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 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: `'"<>()[]{},=\*+? 16
Jednoduchý dotaz
Úkol č. 4
Vyhledání dokumentů obsahujících pojmy vyhovující regulárnímu výrazu afér*
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 17
Jednoduchý dotaz
obsahovat ani mezery ani následující speciální znaky, aniž by byly uvedeny zpětným lomítkem: `'"<>()[]{},=\*+?
Ú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
18
mezinárod* aféra "ABC" mezinárod* 'aféra' "ABC"
Jednoduchý dotaz
Úkol č. 8
Vyhledání dokumentů vyhovujících uloženému tématu témaaféra.
Striktní zápis
.topic( téma-aféra )
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ý
19
Jednoduchý dotaz
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: .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:
20
Jednoduchý dotaz
š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 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á
21
Jednoduchý dotaz
Jména polí Jméno pole může tvořit jedno slovo nebo více slov uzavřených do zpětných jednoduchých uvozovek. Soubor .substring( pdf ) `Jméno souboru` .substring( pdf )
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.
Desetinné číslo z intervalu (0,1.00> definující konkrétní hodnotu koeficientu
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 22
Jednoduchý dotaz
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 ) ["čí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( )
cena, [auto].best( škoda, audi, ford )), spotřeba, {auto} ), výbava, {auto} ), testy, {auto} )
Operá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ší.
23
Jednoduchý dotaz
Striktní zápis
.all ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN )
Infix notace
dotaz1 .all dotaz2 dotaz1 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, 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ů.
24
Jednoduchý dotaz
Striktní zápis
.and ( dotaz1, …, dotazN ) .and/w ( dotaz1, …, dotazN ) .and/l ( dotaz1, …, dotazN ) .and/s ( dotaz1, …, dotazN ) .and/c ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN )
Infix notace
dotaz1 and dotaz2 dotaz1 .and dotaz2 dotaz1 dotaz2
Modifikátory
-
Příklady: .and( mezinárodní, aféra ) mezinárodní and aféra .and/w( vlastník, firma )
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 ) ( dotaz1, …, dotazN )
25
Jednoduchý dotaz
Infix notace
dotaz1 .any dotaz2 dotaz1 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 ) ( dotaz1, …, dotazN )
Infix notace
dotaz1 .best dotaz2 dotaz1 dotaz2
Zjednodušený zápis
dotaz1, dotaz2
Modifikátory
-
Příklady: .best( modrá, červená, zelená, žlutá ) modrá, červená, zelená, žlutá
26
Jednoduchý dotaz
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 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 .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).
27
Jednoduchý dotaz
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"
Operátor entity Popis
Tento operátor slouží k vyhledávání dokumentů obsahujících uvedený typ entit nebo uvedené konkrétní entity. Při hledání entit lze využívat pouze ty entity, které byly extrahovány při indexaci dokumentů. Jednotlivé typy entit, které lze hledat, jsou dané konfigurací fulltextového jádra a jazykem dotazu. Za operátorem a typem entity lze uvést hodnotu, kterou musí entita příslušného typu obsahovat. Hodnota se vyhodnocuje jako typu stem. Obsahuje-li hodnota znaky ? nebo *, vyhodnocuje se jako typu wildcard.
Striktní zápis
28
.entity (typ entity)
Jednoduchý dotaz
<entity> (typ entity) .entity/typ entity <entity/typ entity> .entity/typ entity (hodnota) <entity/typ entity> (hodnota) .entity/typ entity (podtyp1=hodnota1,…) <entity/typ entity> (podtyp1=hodnota1,…) Zjednodušený zápis
:typ_entity :typ entity (hodnota ) :typ entity (podtyp1=hodnota1,…)
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ů uvedené entity. case – Modifikátor case způsobí, že při vyhodnocování bude brána na zřetel velikost písmen v uvedeném pojmu. Konkrétní vyhodnocení operátoru závisí na konfiguraci indexu, ve kterém se hledá.
Příklady: .entity( person ) .entity/person :person .entity/person( Jan Novák ) :person( Jan Novák ) .entity/person( Jan * Novák ) :person( Jan * Novák ) .entity/person( firstname=Jan, surname=Novák ) :person( firstname=Jan, surname=Novák )
29
Jednoduchý dotaz
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 ) ( jméno_pole relační_operátor hodnota ) .filter ( jméno_pole relační_operátor hodnota ) ( 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.` ) ( "Volný text." ) ( 'Volný text.' )
30
Jednoduchý dotaz
( `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. Před operátorem in nelze zadávat žádné modifikátory ani váhy.
Striktní zápis
dotaz .in jméno_pole dotaz .in (jméno_pole1, …, jméno_poleN) dotaz jméno_pole dotaz (jméno_pole1, …, jméno_poleN)
Infix notace
-
Modifikátory
-
Příklady:
31
Jednoduchý dotaz
.and( pilot, voják ) .in titulek .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.
Striktní zápis
.like( klíč_dokumentu ) ( 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, protože je pro jeho vyhodnocení potřeba netokenizovaná hodnota 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.
32
Jednoduchý dotaz
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 33
Jednoduchý dotaz
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 ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN )
infix notace
dotaz1 .near dotaz2 dotaz1 .near/[mcw][číslo] dotaz2 dotaz1 dotaz2 dotaz1 dotaz2
Modifikátory
Příklady:
34
order – Tento modifikátor způsobí, že se budou brát v úvahu pouze výskyty v dokumentu, které odpovídají pořadí poddotazů.
Jednoduchý dotaz
.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 ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN )
35
Jednoduchý dotaz
Infix notace
dotaz1 or dotaz2 dotaz1 .or dotaz2 dotaz1 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
36
Jednoduchý dotaz
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. Jakýkoliv poddotaz operátoru phrase je interpretován jako definice seznamu slov, která se mohou na dané pozici vyskytovat, přičemž se ztrácí veškerá další informace uvedená v tomto poddotaze, jako např. informace o vzájemné pozici slov, jejich vážení atd. Jedinou výjimku tvoří samotný operátor phrase, který umožňuje vnořit frázi do fráze.
Striktní zápis
.phrase ( dotaz1, …, dotazN ) ( dotaz1, …, dotazN )
Infix zápis
dotaz1 .phrase dotaz2 dotaz1 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))
37
Jednoduchý dotaz
Operátor range, range/n, range/d, range/t Popis
Operátor range najde všechny dokumenty obsahující hodnotu 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 >=. Jednotlivé varianty tohoto operátoru určují typ hledané hodnoty: range/n - rozsah je zadán numerickými hodnotami range/d - rozsah je zadán hodnotami typu datum range/t - rozsah je zadán hodnotami typu datetime (datum a čas).
Striktní zápis
.range( hodnota_od, hodnota_do ) ( 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/d ( 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 )
38
Jednoduchý dotaz
Infix notace
dotaz1 .sentence dotaz2 dotaz1 <sentence> 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: .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
-
39
Jednoduchý dotaz
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( sting ) .soundex( tree )
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, protože je pro jeho vyhodnocení potřeba netokenizovaná hodnota 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:
40
Jednoduchý dotaz
oblast .starts "Regionální deníky" .case titulek .starts Ors
Operátor stem, beststem, multistem Popis
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 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. Chování operátoru stem je navíc ovlivněno konfigurací fulltextového jádra, která určuje, zda se tento operátor bude chovat jako operátor beststem a nebo multistem. Výsledek hledání se u těchto operátorů může lišit v případě, že při zpracování daného pojmu vznikne více než jeden jeho základní tvar. Operátor multistem v tomto případě hledá dokumenty, které vyhovují alespoň jednomu vygenerovanému základnímu tvaru. Naproti tomu se operátor beststem snaží z množiny možných základních tvarů vybrat ten, který je nejpodobnější uvedenému pojmu a hledá pak dokumenty vyhovující tomuto jednomu nejlepšímu základnímu tvaru. 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ý
Zjednodušený zápis tohoto operátoru automaticky uplatňuje modifikátor many a váží dokumenty podle počtu výskytů daného 41
Jednoduchý dotaz
zápis
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ů. 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: .many.stem( vlastník ) vlastník .stem( firma )
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, protože je pro jeho vyhodnocení potřeba netokenizovaná hodnota 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.
42
Jednoduchý dotaz
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
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é 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. 43
Jednoduchý dotaz
Striktní zápis
.thesaurus( hodnota ) ( 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, concept 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. `'"<>()[]{},=\/ 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 44
.topic( jméno_tématu )
Jednoduchý dotaz
( 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 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 ) ( hodnota ) ( hodnota )
Infix notace
-
45
Jednoduchý dotaz
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 * - žádný nebo libovolný počet znaků. Další variantou je výčet možností oddělených čárkou a uzavřených do složených závorek. 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 )
46
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á
Jednoduchý dotaz
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. Konkrétní vyhodnocení operátoru závisí na konfiguraci indexu, ve kterém se hledá.
Poznámka
V případě rozsáhlých dotazů, které nelze zjednodušit, doporučuje se použití striktního zápisu bez modifikátoru many. Nalezené dokumenty budou mít tedy váhu 1.00.
Příklady: .many.wildcard( automo* ) automo* .wildcard( 'pre{s,z}ident' ) .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.
Striktní zápis
.word( přesný_výraz ) <word>( přesný_výraz )
Infix notace
-
47
Jednoduchý dotaz
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. Konkrétní vyhodnocení operátoru závisí na konfiguraci indexu, ve kterém se hledá.
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átory nelze použít pro tokenizovaná pole, protože je pro jejich vyhodnocení potřeba netokenizovaná hodnota 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 ./,- ): YYYYMMDD MON_DD_YYYY
48
Jednoduchý dotaz
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ě.
49
Jednoduchý dotaz
Pro vyhledání dokumentů, které mají nějakou hodnotu v zadaném poli, se jako hodnota zadaná v dotazu použije znak hvězdička (*) a jako operátor se použije rovno (=): jméno_pole = * Pro vyhledání dokumentů, které naopak nemají žádnou hodnotu v zadaném poli (tj. pole je prázdné), se jako hodnota zadaná v dotazu použije znak hvězdička (*) a jako operátor se použije nerovno (!=): jméno_pole != * Jméno pole je nezávislé na velikosti písmen. Tyto operátory 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 zdroj != *
50
Jednoduchý dotaz
Modifikátory 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. Konkrétní vyhodnocení však závisí na konfiguraci pole, ve kterém se hledá. Netokenizovaná pole definují vyhodnocování pomocí konfiguračního parametru case, který může být nastaven na následující tři hodnoty: sensitive
V indexu je uložena pouze přesná hodnota pole. V tomto případě uživatel nemůže hledat nezávisle na velikosti písmen.
insensitive
V indexu je uložena pouze hodnota pole převedená do jednotného tvaru umožňující uživateli hledat nezávisle na velikosti písmen, ale nelze při vyhodnocování dotazů vzít velikost písmen v potaz. Toto je defaultní nastavení.
both
Uloží do indexu obě varianty a umožňuje tak řídit, zda se má brát v potaz velikost písmen či nikoliv. POZOR: Hodnoty obsahující pouze malá písmena nelze hledat case senzitivně.
U tokenizovaných polí jako je například obsah dokumentů, rozhoduje o výsledku konfigurace filtr, který se jmenuje normalizer. Tento filtr definuje, jaký text se do indexu zapisuje. Tento filtr se v principu konfiguruje dvěma parametry, jejichž kombinace mají následující význam: replace=yes
Toto nastavení způsobí, že se do indexu ukládají pouze normalizované hodnoty a tudíž je výsledný index malý a rychlý, ale nelze v něm hledat case senzitivně.
replace=no
Toto je defaultní nastavení, které způsobí, že index bude obsahovat originální verzi hodnot a v případě, že se originální hodnota liší od normalizované, pak i normalizovanou hodnotu (při standardní konfiguraci odpovídá normalizovaná hodnota textu převedenému na malá písmena). Díky tomu je možné řídit vyhodnocení dotazu modifikátorem case pouze s tím omezením, že není možné hledat case senzitivně hodnoty obsahující pouze malá písmena (tj. jejichž normalizovaná podoba je shodná s originální).
precise=no
replace=no
Toto nastavení definuje, že se mají ukládat všechny varianty hodnot 51
Jednoduchý dotaz
precise=yes
do indexu. Díky tomu je možné řídit vyhodnocení dotazu modifikátorem case bez jakéhokoliv omezení. Toto nastavení ale způsobí, že se velikost indexu zvětší až na dvojnásobek a vyhodnocování dotazů se tak zpomalí.
Příklad použití modifikátoru case: .case.word( Stát )
Modifikátor count/n Tento modifikátor umožňuje omezit počet výskytů poddotazu ve vyhledaném dokumentu. Modifikátor count/n je možné kombinovat pouze s operátory word a stem a to pouze tehdy, pokud při zpracování poddotazu nedojde k jeho rozpadu na více slov. Počet výskytů v dokumentech lze omezovat v rozsahu 1 až 31. Uvedením kladné hodnoty u modifikátoru count/n se výsledek hledání omezí na dokumenty obsahující minimálně daný počet uvedeného pojmu v poddotazu. Uvedením záporné hodnoty budou naopak vyhledány dokumenty, kde výskyt daného pojmu nepřesáhl uvedený počet. .count/2( firma ) .count/-2( firma )
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 )
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. .many.stem( auto )
52
Jednoduchý dotaz
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 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 )
53
Operátory
Volný text Parser typu volný text podporuje hledání podobných dokumentů. Hledání probíhá pouze v plných textech dokumentů, hledání v polích a zónách není podporováno a také nelze používat dotazovací jazyk, který používá parser typu jednoduchý dotaz, kromě témat. S plnovýznamovými slovy je zacházeno, jako kdyby byl před ně přidán modifikátor MANY a operátor STEM. Implicitně jsou běžná slova jako spojky a předložky vynechávána a dotaz je postaven na slovech s významem, jako jsou podstatná a přídavná jména a slovesa. Výsledky jsou tudíž méně přesné než s použitím parseru typu jednoduchý dotaz. Parser typu volný text umí pracovat se jmény témat, což znamená, že pokud zadaný text obsahuje jméno tématu, bude v hledání použito toto téma. Příklad: Právě závod Inferno Rennen ve švýcarském Mürrenu dnes patří mezi nejznámější pojmy amatérského sjezdového lyžování, podobně třeba jako Vasův běh na poli běžeckém
54
Volný text
Boolovský dotaz Parsel typu boolovský dotaz podporuje kromě hledání v plném textu dokumentů i hledání v polích a zónách. Je podobný parseru typu jednoduchý dotaz, umí využívat stejný dotazovací jazyk a interpretovat hledání v polích a zónách.
55
Internetový parser
Internetový parser Přehled Používá se syntaxe typu dotazu Apache Lucene. Obecně se syntaxe typu dotazu může mezi jednotlivými verzemi měnit. Zde je popsána syntaxe aktuální verze k lednu 2013.
Pojmy Dotaz je rozkládán na pojmy a operátory. Existují dva typy pojmů: Jednotlivé pojmy a fráze. Jednotlivé pojmy jsou slova jako "test" nebo "kolo". Fráze je skupina slov uzavřená do dvojitých uvozovek jako "automatická převodovka". Více pojmů lze zkombinovat dohromady pomocí boolovských operátorů a vytvořit tak složitější dotaz (viz níže).
Pole V poli můžete hledat zadáním jména pole následovaným dvojtečkou a pojmem, který hledáte. Jako příklad předpokládejme, že index obsahuje dvě pole, titulek a text, a pole text že je implicitní pole. Pokud chcete najít dokument s názvem "Správná cesta" obsahující text "lesní pěšina", můžete zadat: titulek:"Správná cesta" AND text:pěšina nebo titulek:"Správná cesta" AND pěšina Protože text je implicitní pole, není indikátor pole vyžadován. Poznámka: Pole je platné pouze pro pojem, který mu přímo předchází, takže dotaz titulek:správná cesta najde v poli titulek pouze "správná". Slovo "cesta" najde v implicitním poli (v tomto případě poli text).
Modifikátory pojmů Jsou podporovány modifikovatelné pojmy dotazu, což rozšiřuje možností hledání.
56
Internetový parser
Hledání pomocí zástupných znaků Hledání pomocí zástupných znaků nahrazujících jeden nebo více znaků v jednotlivých pojmech (ne v dotazech s frází). Pro hledání se zástupným znakem nahrazujícím jeden znak použijte symbol "?". Pro hledání se zástupným znakem nahrazujícím více znaků použijte symbol "*". Hledání s nahrazením jednoho znaku hledá pojmy, kde je nahrazen jeden znak. Například pro vyhledání slov "text" nebo "test" můžete zadat: te?t Hledání s nahrazením více znaků hledá 0 nebo více znaků. Například pro vyhledání slov test, testování nebo tester můžete zadat: test* Hledání pomocí zástupných znaků můžete použít také uprostřed pojmu: te?t Poznámka: Symboly * nebo ? nemůžete při hledání použít jako první znak.
Konfúzní hledání Konfúzní hledání je založené na algoritmu Levenshteinovy vzdálenosti nebo editační vzdálenosti. Pro provedení konfúzního hledání použijte na konci jednoslovného pojmu symbol tilda "~". Například pro vyhledání pojmu, který se píše podobně jako "roam" použijte konfúzní hledání: roam~ Toto hledání najde pojmy jako foam a road. Další (nepovinný) parametr může specifikovat požadovanou podobnost. Jeho hodnota může být mezi 0 a 1, hodnota blíže 1 vrátí pouze pojmy s vyšší podobností. Například: roam~0.8 Pokud není parametr zadán, použije se implicitně 0.5.
Poziční hledání Hledání slov, která jsou od sebe do určité vzdálenosti. Pro provedení pozičního hledání použijte na konci fráze symbol tilda "~". Například pro vyhledání slov "zákon" a "dávky" do 10 slov od sebe použijte: "zákon dávky"~10
57
Internetový parser
Hledání v rozmezí Hledání v rozmezí umožňuje vyhledat dokumenty, jejichž hodnoty polí jsou mezi dolním a horním rozmezím zadaným v dotazu. Hledání v rozmezí může být včetně nebo bez dolního a horního rozmezí. Třídění se provádí lexikograficky. datum:[2012-12-30 TO 2012-12-31] najde dokumenty, jejichž pole datum mají hodnoty mezi 30.12.2012 a 31.12.2012, včetně. Hledání v rozmezí není omezeno pouze na pole typu datum. Můžete je použít i pro jiná pole: titulek:{Aida TO Carmen} najde všechny dokumenty, jejichž titulky jsou mezi Aida a Carmen, ale ne včetně Aida a Carmen. Hledání v rozmezí včetně krajních hodnot je určeno použitím hranatých závorek. Hledání v rozmezí bez krajních hodnot je určeno použitím složených závorek.
Posílení váhy pojmu Pro posílení pojmu použijte symbol stříška "^" s koeficientem posílení (číslo) na konci hledaného pojmu. Čím vyšší je koeficient, tím relevantnější bude pojem. Například pokud hledáte cestující dávky a chcete, aby byl pojem "cestující" relevantnější, použijte symbol ^ spolu s koeficientem posílení u pojmu. Zadejte: cestující^4 dávky Tak budou mít dokumenty s pojmem cestující větší relevanci. Můžete také posílit frázi jako v příkladě: "přeprava cestujících"^4 "sociální dávky" Implicitně je koeficient posílení 1. Koeficient posílení musí být kladný, ale může být menší než 1 (např. 0.2)
Boolovské operátory Boolovské operátory umožňují, aby byly pojmy kombinovány pomocí logických operátorů. Podporovány jsou operátory AND, "+", OR, NOT a "-" (Poznámka: Boolovské operátory musí být velkými písmeny).
58
Internetový parser
OR Operátor OR je implicitní spojující operátor. To znamená, že pokud není mezi dvěma pojmy žádný boolovský operátor, použije se operátor OR. Operátor OR spojující dva pojmy najde dokumenty, v nichž se vyskytuje některý z pojmů. To je ekvivalentem sjednocení u množin. Místo slova OR může být použit symbol ||. Pro vyhledání dokumentů, které obsahují "přeprava cestujících" nebo "dávky" použijte dotaz: "přeprava cestujících" dávky nebo "přeprava cestujících" OR dávky
AND Operátor AND najde dokumenty, v kterých se oba pojmy vyskytují kdekoli v textu. To je ekvivalentem průniku u množin. Místo slova AND může být použit symbol &&. Pro vyhledání dokumentů, které obsahují "přeprava cestujících" a "letiště" použijte dotaz: "přeprava cestujících" AND "letiště"
+ Znak "+" určuje, že se pojem za symbolem "+" musí vyskytovat v textu dokumentu. Pro vyhledání dokumentů, které musí obsahovat "cestující" a mohou obsahovat "dávka" použijte dotaz: +cestující dávka
NOT Operátor NOT vylučuje dokumenty obsahující pojem za NOT. To je ekvivalentem rozdílu u množin. Místo slova NOT může být použit symbol !. Pro vyhledání dokumentů, které obsahují "přeprava cestujících" ale ne "letiště" použijte dotaz: cestující NOT letiště Poznámka: Operátor NOT nelze použít pouze s jedním pojmem. Například následující dotaz nevrátí žádné výsledky: NOT "přeprava cestujících"
59
Internetový parser
Znak "-" vyloučí dokumenty, které obsahují pojem za symbolem "-". Pro vyhledání dokumentů, které obsahují "cestující" ale ne "letiště" použijte dotaz: cestující -letiště
Sdružování poddotazů Pro uzavření skupin a vytvoření poddotazů lze použít závorky. To může být velmi užitečné, pokud chcete řídit boolovskou logiku pro dotaz. Pro vyhledání slov "cestující" nebo "pasažér" a "doprava" použijte dotaz: (cestující OR pasažér) AND doprava To vyloučí možné nejasnosti a zajistí, že dokument musí obsahovat doprava a zároveň buď cestující nebo pasažér.
Sdružování klauzulí Závorky lze rovněž použít pro seskupení více klauzulí. Pro vyhledání titulku, který obsahuje slovo "zákon" i frázi "vyplácet dávky" použijte dotaz: titulek:(+zákon +"vyplácet dávky")
60
Internetový parser
Pokročilý dotaz Parsel typu pokročilý dotaz pracuje obdobně jako jednoduchý dotaz s tím, že na uložená témata lze odkazovat pouze pomocí striktního zápisu.
61