Jak funguje hledání
Globální hledání
Portaro provádí hledání stylem “google”, neboli takovým způsobem, že se snaží vyhledat co nejvíce záznamů, seřazených podle relevance. Pro představu - na slovo “ekonomie” vyhledá i záznamy, jenž mají ekonomii někde v poznámce, avšak tyto záznamy budou mnohem níže, než záznam s názvem “ekonomie”. Pokud bychom je pak seřadili podle názvu, dostaneme poněkud neodpovídající výsledky. Řazení je tedy nastavitelné, nicméně to silně nedoporučujeme.
Nastavení globálního hledání (vyhledávací řádek v hlavičce katalogu) je přes ini OPAC_SEARCH.VzorGlobalniHledaniPokus1,2,3, kde každé definuje šablonu pro vyhledávací dotaz. Pokud se v rámci první šablony nenalezne žádný záznam, Portaro zkusí hledat pomocí druhé šablony a následně třetí.
Šablona definuje:
- Jak se mají do polí rozložit jednotlivá slova z hledaného výrazu. Šablona podporuje dvě funkce:
- “whole”, která vezme celý výraz a vloží ho do šablony.
- “and”, která rozloží jednotlivá vyhledavaná slova do závorek oddělených operátorem AND.
- V jakých polích se má hledat
- S jakou prioritou - záznam obsahující hledaný výraz v názvu bude mít větší prioritu než záznam, který ho má v poznámce. Priorita se určuje znakem stříšky a číslem. Větší číslo značí vyšší prioritu.
Specializovaná hledání - search query
Pro nastavení např. hledání novinek je třeba vytvářet tzv. search query (vyhledávací dotaz), což je JSON formát pro vyhledávací kritéria. Kromě standardních vyhledávacích fieldů lze použít i přímo lucenovské vyhledávací pole, např. P245, nicméně pak query nelze použít při vyhledávání v Z serveru nebo pomocí SQL.
JSON formát je definován například takto:
{
"and": [
{
"field": "name",
"startsWithWords": {"value": "karel"}
},
{
"field": "fond",
"in": {"value": [1,3]}
},
{
"or": [
{
"field": "name",
"eqWords": {"value": "novák"}
},
{
"field": "documentYear",
"between": {"from": 2000, "to": 2002}
}
]
}
]
}
Příklad bude převeden do lucenu jako
(PNAZEV:karel* AND (REZS_FOND:1 OR REZS_FOND:3) AND (PNAZEV:novak OR REZS_ROK:[2000 TO 2002]))
kde:
- do
and
aor
se vkládají seznamy termů - mezi ně se pak vloží ANDy nebo ORy - do
field
se nastavuje vyhledávací field (viz výše) - název druhého (např.
startsWithWords
) pak představuje tzv. matcher. Možné matchery jsou:eq
: přesná hodnotaeqWords
: rozdělí hodnotu podle jednotlivých slov, ty pak fungují stejně jakoeq
startsWithWords
: rozdělí hodnotu podle jednotlivých slov, ty pak fungují jako “začíná na”in
: obsahuje výčet přesných hodnot, například idček fondůbetween
: obsahuje rozsah hodnot, například roků vydání