Fulltextové hledání - záložka Detail

Záložka zobrazí detailní informace k aktuálnímu záznamu ze záložky Seznam.

Položky zadávané ke každému záznamu jsou standardně rozděleny do subzáložek dle svého významu:

Obsažené subzáložky: Hlavní údaje Formuláře

Pokud je v detailu agendy nebo číselníku pouze jedna aktivní subzáložka k výběru, lišta s výběrem subsáložek se nezobrazuje.

V horní části záložky Detail může být variantně zobrazen některý z Panelů definovatelných údajů detailu pro tuto agendu. Zobrazení panelu definovatelných údajů detailu závisí na aktuálním nastavení v menu Nastavení pro danou agendu a přihlášeného uživatele.

Subzáložka Hlavní údaje

V horní části subzáložky jsou k dispozici následující položky:

Název Popis

Agenda

Agenda, pro kterou bude fulltextové hledání vytvořeno. U nové definice agendu vyberete ze skrytého seznamu, u již existující definice je položka nepřístupná; tedy nelze ji měnit. Nabízejí se přitom pouze ty agendy, pro které dosud nebylo fulltextové hledání nadefinováno.
Třída

Třída Business objektu (BO), pro který je dané pravidlo definováno. Needitovatelná položka zobrazující se pouze z informativních důvodů.

Řetězec, pod kterým se jednotlivé třídy v seznamu nabízejí, odpovídá položce "Popis" daného Business objektu a můžete podle ní i daný Business objekt dohledat v popisu Struktur a definic GenDoc.chm.

Tip pro vás - rychlá cesta, v dokumentaci GenDoc.chm dohledat popis nějaké nabízené třídy ze seznamu: Např. chcete získat dokumentaci k nabízené třídě Definice report. Pak v GenDoc.chm si přes fulltextové hledání nechte dohledat řetězec "Popis: Definice report".

K vybrané třídě se zobrazuje i CLSID (identifikační GUID) Business objektu dané třídy.

V dokumentaci GenDoc.chm jsou CLSID Business objektů uvedeny jak v nekomprimovaném delším 36-ti znakovém tvaru (32 znaků vč. pomlček), resp. v 38-mi znakovém (vč. pomlček, závorek), tak v pakovaném 26-ti znakovém tvaru (viz PackedGUID), ve kterém se používají v programu (podle nich lze rovněž popis v dokumentaci GenDoc.chm rychle dohledat).

Pomocná db. tabulka Uživatelský název tabulky, která v databázi vznikne po uložení nové definice, do které se ukládají řetězce pro fulltextové hledání. Při vytváření nového záznamu lze tuto položku editovat. U již existující definice je poté položka nepřístupná. Změna názvu tabulky je nutná např. tehdy, pokud by v databázi tabulka se stejným jménem již existovala. K čemuž může dojít obvykle ale jen tehdy, pokud se definice vytvářejí i pro definované číselníky. Název může obsahovat pouze alfanumerické znaky.
Název tabulky v databázi Název tabulky v databázi, který se přebírá z položky Pomocná db. tabulka a doplněný o prefix FSU$ v případě, že je tabulka v kódování Unicode nebo FS$ v případě, že je tabulka v kódování ANSI. Needitovatelná položka zobrazující se pouze z informativních důvodů. Maximální délka názvu tabulek fulltextu je do 24 znaků.
Unicode

Parametr, který indikuje, zda-li je tabulka definice fulltextového hledání v kódování Unicode nebo ANSI. Parametr nemá uživatel možnost ovlivnit, neboť definice vznikají v kódování Unicode automaticky a tabulky v kódování ANSI se mohou v systému ABRA Gen vyskytnout pouze přenesením z verzí, kdy podpora Unicode ještě nebyla v systému implementována.

Staré definice v ANSI je možné do Unicode převést pomocí funkce Převést na Unicode.

Stav

Stav aktualizace fulltextu.

  • OK - fulltext je aktuální.
  • Aktualizovat - je zapotřebí provést aktualizaci (ručně funkcí Aktualizovat fulltext nebo naplánovanou úlohou Aktualizace fulltextového hledání). Stav po update databáze, vytvoření nové definice fulltextu, případně úpravě definice stávající.

    Stav Aktualizovat na hlavičce dokladu znamená, že se ve stavu Aktualizovat nachází nejméně jeden index, který je součástí definice daného fulltextu (viz popis položky Stav v tabulce Indexy).

Používat je možné i fulltext, který se nachází ve stavu Aktualizovat - za předpokladu, že je ve stavu OK alespoň jedna z jeho součástí (alespoň jeden index). Vždy se prohledávají pouze indexy, které jsou ve stavu OK. Uživatel si navíc přímo v příslušné agendě může zvolit, které indexy chce prohledávat.

Pro zvýšení přehlednosti jsou záznamy ve stavu Aktualizovat zvýrazněny červeným podbarvením.

Datum aktualizace

Datum a čas poslední aktualizace fulltextu. Pokud fulltext dosud nebyl aktualizován (typicky po vytvoření nové definice), zobrazuje se místo časového údaje text "Neproběhla".

Výraz pro omezení zpracovaných záznamů

Výrazem je možné omezit počet zpracovávaných záznamů, které se do aktualizace fulltextu mají zahrnout. Napočtené záznamy nesplňující podmínku se při další aktualizaci odmažou

Budeme-li mít například záznamy napočteny za posledních 5 let, zadáme podmínku na přepočtení záznamů jen za poslední rok. Následně se již přepočtené záznamy nesplňující podmínku vymažou a napočteny a aktualizovány budou jenom ty záznamy, které podmínku splňují.

Výraz můžete zapsat ručně nebo jej můžete sestavit komfortněji pomocí Editoru výrazů, který si můžete vyvolat po stisku funkčního tlačítka (může se lišit dle verze a nastaveného vzhledu). Ve výrazech jsou k dispozici funkce a data z objektů dostupných v daném místě programu, viz funkce a datové položky objektu v editoru výrazů.

Při psaní SQL platí:

  • Bude se doplňovat do Where klauzule na vymazávání/přidávání ID, nad kterými se má fulltext zpracovat.
  • Na sloupce tabulky se odkazujeme pomoci aliasu RT (Reference Table)

Pokud bychom chtěli, aby se fulltext počítal jen nad fakturami za poslední rok, zapíšeme do výrazu následující: 'RT.DOCDATE$DATE >= ' + NxDateToFloat(Date) – 365

Ve spodní části subzáložky je prvek editovatelný seznam pro zadání definic indexů, které se budou prohledávat. V editovatelném seznamu se zadávají následující položky:

Název Popis
Stav

Položka nabývající hodnot OK nebo Aktualizovat se stejným významem jako v hlavičce.

Pokud je alespoň jeden index ve stavu Aktualizovat (např. po doplnění nového indexu do definice), je ve stavu Aktualizovat i celá definice.

Název

Uživatelský název indexu pro snadnější identifikaci.

Zadané názvy zároveň slouží jako popisky funkčních tlačítek v panelu fulltextového hledání, pomocí kterých je možné zapínat a vypínat prohledávání jednotlivých indexů.

Popis

Bližší vysvětlující popis dané definice indexu. V panelu pro fulltextové hledání se popis zobrazuje formou tooltipu.

Dělení slov

Položka typu skrytý seznam, z něhož vyberete způsob rozdělování znakových řetězců, tj. jaké části řetězce budou považovány za samostatná slova:

  • Bílé znaky - slova se budou dělit pomocí bílých znaků (mezery, tabulátory).

    Přechod na nový řádek ve víceřádkovém textu je vždy považován za oddělovač.

  • Regulární výraz - slova se budou dělit pomocí libovolného řetězce vyhovujícímu definici regulárního výrazu v poli Regulární výraz.

    Přechod na nový řádek ve víceřádkovém textu je vždy považován za oddělovač.

  • Nerozdělovat - slova nebudou nijak rozdělována (tedy ani mezerami - celý zadaný řetězec bude považován za jedno slovo).
  • Vlastní - slova se budou dělit vždy pomocí bílých znaků a dále dle seznamu volitelných oddělovačů, které je možné zadat do pole Oddělovače slov. Jednotlivé oddělovače při zadávání nijak neoddělujte, každý znak v zadaném řetězci znamená jeden oddělovač.
  • Inteligentní - za slovo budou považovány následující řetězce:
    • e-mailové adresy
    • URL adresy (něco://něco dalšího)
    • skupiny čísel oddělených jedním z těchto oddělovačů _-.,\/ (datumy, čísla verzí apod.)

      Je třeba mít na paměti, že v případě používání s ostatními znaky (nenumerickými) jsou tyto oddělovače chápány jako konce slov a systém bude řetězce na místech jejich výskytu dělit. Pokud je tedy třeba vyhledávat řetězce typu např. aaa-bbb, je třeba zvolit dělení Vlastní, ve kterém nebude znak "-" uveden mezi oddělovači.

    • číslo dokladu (DisplayName)

      Algoritmus vyhledá i další alfanumerické řetězce, které svou strukturou DisplayName připomínají.

    • (A-Za-z0-9_) libovolně se opakující, tedy v podstatě jakékoliv běžné slovo
Oddělovače slov Zde je možné provést výčet znaků, které budou indikovat konec slova. Znaky se uvádějí za sebe bez mezer. Položka se zpřístupní, pokud je v položce Dělení slov vybrána hodnota Vlastní.
Regulární výraz

Umožňuje nadefinovat oddělování slov prostřednictvím regulárního výrazu.

Regulární výraz je zapotřebí zadat tak, aby byl složen ze dvou skupin. Mechanismus indexování následně v definovaném výrazu postupně vyhledává řetězec odpovídající zadanému celému regulárnímu výrazu (dvě skupiny). Obsah první skupiny považuje za slovo k indexaci, obsah druhé skupiny za oddělovač.

Mějme v databázové tabulce sloupec typu poznámka a v jednotlivých záznamech uložené texty, které vypadají následovně:

Lorem **ipsum** _dolor_ sit **amet**,
consectetuer ~adipiscing~ elit.

Chceme vyhledávání nadefinovat tak, abychom mohli do panelu fulltextového hledání zadávat text bez formátovacích značek.

Použijeme Dělení slov typu Regulární výraz a do pole Regulární výraz vyplníme následující výraz:

(.*?)(?:[\s*_~.,]+)

Systém ABRA Gen zpracuje uvedený ukázkový text následovně:

  1. výskyt regulárního výrazu: Lorem ** - slovo je LOREM, oddělovač je mezera a dvě hvězdičky.
  2. výskyt regulárního výrazu: ipsum** _ - slovo je IPSUM, oddělovač je dvě hvězdičky, mezera a podtržítko.
  3. výskyt regulárního výrazu: dolor_ - slovo je DOLOR, oddělovač je podtržítko a mezera.
  4. atd.

Obdobně jako v případě metody Bílé znaky je konec řádku vždy považován za oddělovač a není potřeba ho v regulárním výrazu specifikovat.

Položka se zpřístupní pouze v případě, že je v položce Dělení slov vybrána volba Regulární výraz.

Min. délka slova Minimální délka slov, která budou zahrnuty do množiny záznamů, jež se budou prohledávat. Hodnota může být v rozmezí 0 - 100. Pokud bude tato hodnota překročena, systém záznam nedovolí uložit. Standardní min. délka slova je nastavena na 3 znaky.
Max. délka slova

Maximální délka slov, která budou zahrnuty do množiny záznamů, jež se budou prohledávat. Hodnota může být v rozmezí 0 - 100. Pokud bude tato hodnota překročena, systém záznam nedovolí uložit.

Pokud je indexované slovo delší než jeho nastavená maximální délka, tak se do tabulky uloží počet jeho prvních znaků stanovený maximální délkou.

Typ

Typ výrazu určuje, co bude obsahem následující položky Výraz (jakým způsobem se nadefinuje, co bude daný index prohledávat). V aktuální verzi jsou k dispozici dvě možnosti:

  • QR výraz - k definici výrazu se použijí vestavěné funkce (jejichž parametry mohou být položky business objektů z datového modelu) a podporované operátory; QR výrazy se zpravidla sestavují interaktivně pomocí Editoru výrazů
  • SQL - alternativně je možné výraz zapsat také pomocí dotazovacího jazyka SQL; tato možnost je určena pro pokročilejší uživatele a využívá se ve specifických případech, kdy se možnost definice pomocí QR výrazu ukáže jako příliš omezující; SQL dotazy se zapisují ručně (k čemuž je zapotřebí přiměřená znalost databázových struktur ABRA Gen)
Výraz

Položka pro zadání vlastního výrazu. Zde se je třeba odkázat na patřičnou položku, která se bude při použití daného indexu prohledávat. Obsah záleží na tom, zda je v položce Typ zvolena možnost QR výraz nebo SQL:

QR výraz

Výraz můžete zapsat ručně nebo jej můžete sestavit komfortněji pomocí Editoru výrazů, který si můžete vyvolat po stisku funkčního tlačítka (může se lišit dle verze a nastaveného vzhledu).

Pokud by bylo třeba vyhledávat v obsahu e-mailů, které obsahují HTML tagy (tj. jsou ve formátu HTML), je možné využít QR funkci NxHTML2Text, která převede HTML do prostého textu (odstraní všechny tagy a zahrne pouze textový obsah tagu <body>). Výraz by pak např. u odeslaného emailu byl NxHTML2Text(Body) s nastavením dělení slov na Vlastní.

SQL

Výraz se zapisuje ručně.

Klauzule SELECT musí obsahovat dva sloupce:

  • ID - odpovídá ID příslušného business objektu - např. pokud definujete index pro prohledávání skladových karet, SQL dotaz musí vracet ID jednotlivých skladových karet, viz příklad níže

  • TEXT - výraz (textový řetězec), který se bude vyhodnocovat (hledaný řetězec, který zadá uživatel, se bude porovnávat s hodnotami vrácenými SQL dotazem ve sloupci TEXT)

Dohledání skladových karet dle EAN na skladových jednotkách (tento SQL dotaz by se použil v definici indexu pro použití v agendě Skladové karty):

SELECT SU.Parent_ID as ID, S.EAN as Text
FROM StoreUnits SU
JOIN StoreEANs S ON S.Parent_ID = SU.ID

Pod editovatelným seznamem adresátů je k dispozici lišta navigátoru:

Navigátor v této subzáložce

Navigátor v této záložce obsahuje tlačítka:

  • Pro pohyb kurzoru po řádcích (na začátek, předchozí řádek, další řádek, na konec) editovatelného seznamu, změně jejich pořadí a hledání hodnoty v seznamu.
  • Vložit - Pro vložení nového řádku před aktuální řádek (na němž stojí kurzor).
  • Přidat - Pro přidání nového řádku na konec.
  • Vymazat - Pro vymazání aktuálního řádku.

Subzáložka Formuláře

Subzáložka je k dispozici pouze, je-li v menu Nastavení aktuálně zatržena volba pro zobrazení uživatelských formulářů. Umožňuje vybírat si z nadefinovaných uživatelských vstupních formulářů a zobrazovat a zadávat si skrz ně potom jednotlivé údaje.

Pravidla pro použití této záložky jsou pro všechny agendy, ve kterých se může vyskytnout, společná a byla podrobně popsána v kap. Záložka Formuláře - obecně.

Zobrazení seznamu v Detailu

V některé části této záložky může být zobrazen Seznam (Panel pro zobrazení seznamu na jiných záložkách), tedy záznamy ze záložky seznam (podrobněji viz Společné prvky v dokladových agendách - záložka Detail).

Zobrazení seznamu závisí na aktuálním nastavení v menu Nastavení pro danou agendu a přihlášeného uživatele.

Funkce k záložce Detail:

Podmnožina funkcí ze záložky Seznam.

V editačním režimu platí zásady platné pro editaci záznamů v knihách. K dispozici jsou standardní funkce pro režim editace, přičemž po uložení záznamu v závislosti na jeho údajích může dojít k vyvolání nějaké další automatické akce, viz akce volané po uložení záznamu.