Produkty

Úvodní stránka / Produkty / 602SQL - Komerční rozšíření / Podrobný popis

602SQL - Komerční rozšíření

602SQL

Rozšíření o pokročilé fulltextové funkce a podporu formátu XML umožňující bezproblémový přenos strukturovaných dat v heterogenních prostředích.

 

Fulltext - Příklad 1

Mějme webovou stránku, kam uživatelé pomocí HTML formuláře vkládají příspěvky (které se ukládají do databáze). Chceme, aby v aplikaci existovala možnost vyhledávání v těchto příspěvcích.

Nástin řešení:
Nejjednodušší příklad - kompletní návrh a zprovoznění fulltextu je na straně serveru otázkou doslova několika kliknutí myší, a to i v případě, že databázové tabulky jsou již navrženy a dokonce již naplněny daty. Není potřeba žádná dodatečná konfigurace SQL serveru. Zaindexování příspěvků může probíhat v reálném čase.

1. Vytvoření fulltextu

Tabulka (např. TAB_FT_1) obsahující příspěvky má strukturu podle následujícího obrázku.

Definice tabulky pro příklad 1

Dokumentem k indexování je zde sloupec PRISPEVEK, unikátním sloupcem pro identifikaci je ID. Sloupec ID již obsahuje odkaz na sekvenci pro generování unikátních čísel, pokud by tomu tak nebylo, lze tento odkaz i sekvenci vytvořit automaticky při interaktivním návrhu fulltextu.
Tabulka již může být naplněna daty – při vytvoření fulltextu se data automaticky zaindexují.

Nový fulltextový systém pro tyto dokumenty se vytvoří nejjednodušeji následujícím způsobem:

  1. Na Řídicím panelu vyberte kategorii objektů Fulltexty a proveďte akci Vytvořit
  2. V okně, které se otevře, zadejte jméno nového fulltextu, vyberte jazyk, v němž jsou psány dokumenty a rozhodněte, zda se budou slova z dokumentů lemmatizovat (tj. převádět do základního tvaru – pro češtinu lze doporučit) a případné další vlastnosti, které ale v tomto jednoduchém příkladu nepoužijeme.

Vytvoření nového fulltextu

  1. Po stisku OK se otevře okno Návrháře fulltextu. V horní části je vypsán souhrn nastavení z předešlého kroku (nelze již změnit, pouze smazat a vytvořit nový). V tabulce uprostřed se vytvářejí tzv. Fulltextové triggery, které definují automatické indexování. Zadává se jméno tabulky dokumentů, tj. tabulky obsahující sloupec s dokumenty, vybere se sloupec obsahující unikátní identifikaci dokumentu (není-li takový dosud v definici tabulky, lze z tohoto místa vytvořit nový vhodný sloupec), dále sloupec s textem dokumentu (tj. Sloupec obsahující příspěvky). Protože je obsah dokumentu uložen přímo v tabulce, ponecháme checkbox Nepřímý nezatržený a na závěr určíme formát, v němž jsou dokumenty psány – v tomto případě se jedná vždy o čistý text, proto vybereme formát PLAIN.

Návrh definice fulltextu

  1. Uložením definice fulltextu se fulltext inicializuje a pokud jsou již v tabulce data, automaticky se zaindexují. Od této chvíle se již fulltext může používat. Každá změna ve sloupci PRISPEVKY se automaticky přenese do fulltextového indexu – není třeba nic dalšího definovat.

2. Vyzkoušení fulltextu z klientské prostředí

Zapište do tabulky TAB_FT_1 nějaká smysluplná data v češtině a poté pro vytvořený fulltext proveďte akci Spustit. Otevře se okno testovacího rozhraní pro zadaný fulltextový systém. Do pole Najít zadejte hledaný řetězec a stiskněte Vyhledat. V části Výsledky se zobrazí ty dokumenty, které obsahují zadané slovo nebo frázi i se svým kontextem, tj. několika slovy před a za vyhledaným slovem.

Testovací rozhraní k fulltextu

3. Vyhledávání z SQL

Vyhledávání ve fulltextu se provádí pomocí speciální klauzule FULLTEXT použitelné hlavně v dotazovém výrazu SELECT.

Příklady:

Vybrat ty záznamy, které obsahují zadané slovo 602sql (v tomto případě, kdy v záznamu je indexován pouze 1 sloupec, můžeme vzájemně zaměňovat záznamy a dokumenty):

SELECT *
FROM Tab_ft_1 
WHERE Fulltext(.Ftx_priklad1, id, '602sql')]

Vybrat tytéž dokumenty, ale zobrazit je i kontextem:

SELECT Id, Fulltext_get_context('.Ftx_priklad1', prispevek, 'plain', 0, 
@@FULLTEXT_POSITION, 1, 3, '>>%<<') AS `Kontext`
FROM Tab_ft_1 
WHERE Fulltext('.FTX_PRIKLAD1',`ID`,'602sql')]

Více o klauzuli FULLTEXT, funkci Fulltext_get_context resp. systémové proměnné @@FULLTEXT_POSITION se dozvíte z nápovědy k 602SQL.

Ochrana osobních údajů