Fulltext_get_context

SQL

function Fulltext_get_context(IN ft_label CHAR(52), IN doc BLOB, IN format CHAR(10), IN mode INT, IN position INT,IN cnt INT, IN margin INT, IN decoration CHAR(50)); returns CLOB;


Parametry

ft_label
označení fulltextového systému ve tvaru schéma.fulltext nebo .fulltext pro otevřenou aplikaci;
doc
dokument nebo odkaz na dokument
format
formát dokumentu (TXT, TEXT nebo PLAIN pro čistý text, RTF, DOC nebo HTML apod. pro ostatní definované) nebo prázdný řetězec pro automatické rozpoznání známých formátů
mode
způsob předání dokumentu
position
pozice (slova) v dokumentu, kolem níž se hledá kontext
cnt
počet vyznačených slov
margin
počet slov před a za position v kontextu
decoration
znaky, kterými se "obalí" cnt slov v pozici position ve výsledném kontextu


Od verze

9.5

Popis

Funkce vrátí kontext (text okolo) výskytu slova (resp.o víceslovné fráze) vyhledaného pomocí predikátu Fulltext.

Prohledávaný dokument lze předat dvojím způsobem, přičemž způsob předání popisuje parametr mode takto:

hodnotapopis
0 dokument je obsahem parametru doc (textově nebo binárně)
1 dokument je v souboru, jehož jméno je v parametru doc

Pomocí format lze určit, v jakém formátu se předpokládají texty k indexování. Znáte-li formát předem (např při indexování CLOBů v tabulce), použijte zkratku pro daný formát (např. TXT), neznáte-li jej (např. při indexování obsahu souborů v adresáři), použijte prázdný řetězec - proběhne analýza počátku textu a pro známé formáty se použije odpovídající konvertor. Nepodaří-li se analýza, funkce skončí s chybou.

Pozice slova (fráze) v dokumentu je obvykle dána systémovou proměnnou @@FULLTEXT_POSITION, která je nastavena při každém vyhodnocení predikátu Fultext vracejícím TRUE. Při vyhledání víceslovné fráze bude pozice ukazovat na první ze slov.

Parametrem margin stanovíte, kolik slov před a za nalezeným slovem (resp. frází) se vrátí (spolu se slovem a znaky zadanými v decoration) jako výsledek funkce. V případě víceslovné fráze (ale ne fráze složené pomocí spojek AND, OR nebo NEAR!!) je třeba sdělit počet slov fráze parametrem cnt.

Pomocí decoration lze zvýraznit hledané slovo v kontextu. Řetězcový parametr musí mít následující tvar znaky_před%znaky_po, kde % značí pozici hledaného slova (víceslovné fráze). Bude-li výsledek funkce např. předán browseru jako HTML, lze s výhodou použít tohoto zvýraznění: "<B>%</B>"

Tato funkce nahrazuje zastaralou funkci Fulltext_context.



Návratová hodnota

Funkce vrací kontext výskytu slova délky 2*margin+cnt slov.



Příklad

Najít výskyty slova Databáze a zobrazit jejich kontext; ftx systém v aktuální aplikaci se jmenuje ftx_test, sloupec s dokumenty v tabulce Doctab se jmenuje doc, dokumenty jsou uloženy v čistém textovém formátu:

SELECT Fulltext_get_context(".ftx_test",doc,"TXT",0,@@FULLTEXT_POSITION,1,5,">>%<<")
FROM Doctab
WHERE Fulltext(".ftx_test",id,"Databáze")

Totéž zadání - v proceduře pomocí průchodu kurzoru:

DECLARE pom CLOB;
FOR radek AS ftcur INSENSITIVE CURSOR FOR
  SELECT id,doc,@@FULLTEXT_POSITION AS pos
  FROM Doctab
  WHERE Fulltext(".ftx_test",id,"Databáze")
DO
  SET pom = Fulltext_get_context(".ftx_test",radek.doc,"TXT",0,radek.pos,1,5,">>%<<");
  CALL log_write(pom);
END FOR;