Fulltext_index_doc

Internφ programovacφ jazykC/C++PascalSQL

function Fulltext_index_doc(var ft_label : string; docid : integer; var filename : string; var format :string) : Boolean;
BOOL cd_Fulltext_index_doc(cdp_t cdp, const char * ft_label, t_docid docid, const char * filename, const char * format);
function cd_Fulltext_index_doc(cdp : cdp_t; ft_label : PChar; docid : integer; filename, format : PChar) : Boolean;
FUNCTION Fulltext_index_doc(IN ft_label CHAR(52), IN docid INT, IN doc CLOB, IN format CHAR(10), IN mode INT) RETURNS BOOLEAN;

Parametry:

ft_label oznaΦenφ fulltextovΘho systΘmu;
docid Φφslo dokumentu (unikßtnφ hodnota v rßmci fulltextovΘho systΘmu);
filename plnΘ jmΘno souboru obsahujφcφho dokument;
format formßt dokumentu (TXT, TEXT nebo PLAIN pro Φist² text, WPD, RTF, DOC, HTM);
doc dokument nebo odkaz na dokument podle hodnoty;
mode zp∙sob p°edßnφ dokumentu

Od verze:

7.0

Popis:

Funkce ulo₧φ dokument specifikovan² parametry do fulltextovΘho systΘmu oznaΦenΘho parametrem ft_label.

Je-li funkce volßna v klienta, pak dokument musφ b²t ulo₧en v souboru, jeho₧ plnΘ jmΘno je p°edßno jako parametr filename. Je-li funkce volßna na serveru, pak lze dokument p°edat n∞koliker²m zp∙sobem, p°iΦem₧ zp∙sob p°edßnφ popisuje parametr mode takto:

0 - dokument je obsahem parametru doc (tj. v parametru doc je obsah sloupce (nebo v²raz) typu CHAR nebo CLOB );

1 - dokument je v souboru, jeho₧ jmΘno je v parametru doc (tj. v parametru doc je obsah sloupce typu CHAR, kter² obsahuje jen plnß jmΘna soubor∙);

2 - dokument je OLE objekt (embedded nebo linked) umφst∞n² v parametru doc (tj. v parametru doc je obsah sloupce typu BLOB).

Pomocφ format lze zvolit, mß-li se indexovat Φist² text (parametr TXT, TEXT nebo PLAIN) nebo jin² formßt (WPD, RTF, DOC, HTM) - v tomto p°φpad∞ se provßdφ dodateΦnß anal²za textu, je-li skuteΦn∞ dan² formßt a jakΘ verze (u DOC). Nepoda°φ-li se anal²za, funkce skonΦφ s chybou.

Pokud zp∙sob ulo₧enφ dokumentu je 1 nebo 2, pak mφsto jmΘna formßtu dokumentu lze uvΘst "BYSUFFIX". Formßt se pak zvolφ automaticky podle p°φpony jmΘna souboru.

Pokud je zp∙sob ulo₧enφ dokumentu 1 (jmΘno souboru) a soubor se nenajde, skonΦφ funkce chybou.

Pokud fulltextov² systΘm ji₧ obsahuje informace o obsahu dokumentu oznaΦenΘho parametrem docid, jsou p°ed zaindexovßnφm p°edanΘho dokumentu vymazßny. Pokud indexujete vφce tabulek, v∞nujte pozornost unikßtnosti Φφsla dokumentu pro vÜechny tabulky (nap°. vyu₧itφm jednΘ sekvence)!

Hodnota funkce:

Funkce vracφ TRUE p°i ·sp∞chu, FALSE p°i chyb∞.

P°φklad:

P°edpoklßdejme, ₧e tabulka TXTAB obsahuje text ve sloupci TX a Φφslo tohoto dokumentu ve sloupci CISLO_DOC. Text je bu∩ prost² text nebo je ve formßtu RTF. Zaindexovßnφ lze pak provßd∞t v triggeru definovanΘm takto:

TRIGGER txupd AFTER UPDATE ON Txtab
REFERENCING NEW AS nove FOR EACH ROW
BEGIN
  IF Substring(nove.tx FROM 1 FOR 5) = '{\rtf' THEN
    CALL Fulltext_index_doc('', nove.cislo_doc, nove.tx, 'rtf', 0);
  ELSE
    CALL Fulltext_index_doc('', nove.cislo_doc, nove.tx, 'txt', 0);
  END IF;
END

Tento trigger p°edpoklßdß, ₧e se Φφslo dokumentu p°i operaci UPDATE nem∞nφ.

P°φklad:

P°edpoklßdejme, ₧e tabulka MojeCD mß mj. primßrnφ klφΦ Id_CD, dßle sloupce Nazev a Interpret typu CHAR(250), sloupce Skladby a Poznamka typu CLOB. VÜechny tyto ·daje je t°eba zaindexovat (p°i vklßdßnφ novΘho CD a p°i editaci).

TRIGGER PoVlozeniCD AFTER INSERT ON MojeCD
REFERENCING NEW AS nove FOR EACH ROW
BEGIN
  CALL Fulltext_index_doc('', nove.id_CD, nove.nazev||nove.interpret||nove.skladby||nove.poznamka, 'txt', 0);
END
TRIGGER PoEditaciCD AFTER UPDATE OF ANY nazev,interpret,skladby,poznamka ON MojeCD
REFERENCING NEW AS nove FOR EACH ROW
BEGIN
  CALL Fulltext_index_doc('', nove.id_CD, nove.nazev||nove.interpret||nove.skladby||nove.poznamka, 'txt', 0);
END
TRIGGER PredVymazanim BEFORE DELETE ON MojeCD
REFERENCING OLD AS stare FOR EACH ROW
BEGIN
  CALL Fulltext_remove_doc("", stare.id_CD);
END

Viz