Fulltext_context

sql

function Fulltext_context(IN doc BLOB, IN format CHAR(10), IN mode INT, IN position INT, IN margin INT, IN decoration CHAR(50)); returns CLOB;

Parametry:

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
mode způsob předání dokumentu
position pozice (slova) v dokumentu, kolem níž se hledá kontext
margin počet slov před a za position v kontextu
decoration znaky, kterými se "obalí" slovo v pozici "position" ve výsledném kontextu

Od verze:

7.0d, ve verzi 9.5 zastaralá

Popis:

Funkci lze od verze 9.5 používat na textové dokumenty, pro binární dokumenty zpracované externími konvertory nemusí funkce pracovat správně. Pro verzi 9.5 existuje funkce obdobná - Fulltext_get_context.

Funkce vrátí kontext (text okolo) výskytu (jednoho) slova 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 v dokumentu může být 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 jedno ze slov.

Parametrem margin stanovíte, kolik slov před a za nalezeným slovem se vrátí (spolu se slovem a znaky zadanými v decoration) jako výsledek funkce.

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. Bude-li výsledek funkce např. předán browseru jako HTML, lze s výhodou použít tohoto zvýraznění: "<B>%</B>"

Hodnota funkce

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

Příklady:

Nalézt v dokumentech uložených v databázi slovo Databáze a vrátit kontexty jeho výskytu:

SELECT Fulltext_context(doc,"TXT",0,@@FULLTEXT_POSITION,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_context(radek.doc,"TXT",0,radek.pos,5,">>%<<");
  CALL log_write(pom);
END FOR;

Viz