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:
hodnota | popis |
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.
Funkce vrací kontext výskytu slova délky 2*margin+cnt slov.
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;