Es sind zwei SQL-Tabellenwertfunktionen verfügbar, die beide db2ext.textsearch heißen. Zur Verwendung der Funktion db2ext.highlight ist die Funktion db2ext.textsearch mit den zusätzlichen Parametern numberOfHits und hitInformation erforderlich.
In diesem Beispiel wird die Funktion db2ext.highlight aufgerufen, um das gesamte Dokument anzuzeigen, ohne dabei Fundstellen hervorzuheben, die mit Hilfe der Funktion db2ext.textsearch gefunden wurden.
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 0 ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"bestseller" | "peacekeeping" | "soldiers" | "attention"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
Das Suchargument gibt folgendes Ergebnis zurück:
DOCID HIGHLIGHT 2 A New York Times bestseller about peacekeeping soldiers called "Keepers" who devise a shocking scheme to get the worlds attention after their tour of duty ends. 1 record(s) selected.
Anmerkung |
---|
In sämtlichen Beispielen für db2ext.highlight wird die Tabellenfunktion db2ext.textsearch aufgerufen, um nach einem der folgenden Wörter zu suchen: "bestseller", "peacekeeping", "soldiers" oder "attention". |
In diesem Beispiel wird die Funktion db2ext.highlight aufgerufen, um das gesamte Dokument anzuzeigen, wobei die Fundstellen hervorgehoben werden, die mit Hilfe der Funktion db2ext.textsearch gefunden wurden.
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 0, TAGS = ("<bf>", "</bf>" ) ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"bestseller" | "peacekeeping" | "soldiers" | "attention"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
Das Suchargument gibt folgendes Ergebnis zurück:
DOCID HIGHLIGHT 2 A New York Times <bf>bestseller</bf> about <bf>peacekeeping</bf> <bf>soldiers</bf> called "Keepers" who devise a shocking scheme to get the worlds <bf>attention</bf> after their tour of duty ends. 1 record(s) selected.
In diesem Beispiel wird die Funktion db2ext.highlight so aufgerufen, dass maximal 10 Ausschnitte (Fenster) des Dokuments angezeigt werden. Dabei beträgt die Fenstergröße 24, was ungefähr 12 Byte an Daten auf jeder Seite der Fundstelle entspricht. Zusätzlich werden durch die Funktion db2.textsearch gefundene Fundstellen hervorgehoben.
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 10, WINDOW_SIZE = 24, TAGS = ("<bf>", "</bf>" ) ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"bestseller" | "peacekeeping" | "soldiers" | "attention"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
Das Suchargument gibt folgendes Ergebnis zurück:
DOCID HIGHLIGHT 2 York Times <bf>bestseller</bf> about <bf>peacekeeping</bf> ... <bf>peacekeeping</bf> <bf>soldiers</bf> called "Keepers" ... the worlds <bf>attention</bf> after their 1 record(s) selected.
Die erste Fundstelle ist <bf>bestseller</bf>. Dieser Treffer bestimmt das erste Fenster. Der zweite Treffer, <bf>peacekeeping</bf>, ist nur 8 Byte vom ersten Treffer entfernt und wird vollständig in das erste Fenster aufgenommen. Der dritte Treffer, <bf>soldiers</bf>, befindet sich außerhalb des ersten Fensters und bestimmt deshalb ein neues Fenster. Da der zweite Treffer, <bf>peacekeeping</bf>, nur 2 Byte von der linken Seite des Treffers <bf>soldiers</bf> entfernt ist, wird er auch in das zweite Fenster aufgenommen und hervorgehoben. Der vierte Treffer, <bf>attention</bf>, befindet sich außerhalb des zweiten Fensters und bestimmt daher ein neues Fenster. Da die Größe dieses Fensters keinen vorherigen oder zusätzlichen Treffer beinhaltet, sind nur Daten aus der Umgebung des Treffers in dem Fenster enthalten.
Da WINDOW_SEPARATOR nicht angegeben wurde, wird außerdem das Standard-Fenstertrennzeichen " ... " verwendet, um die drei Dokumentfenster voneinander zu trennen.
Anmerkung |
---|
Um eine möglichst hohe Leistung bei der Verwendung der Funktion db2ext.highlight sicherzustellen, sollte der Benutzer die Suchergebnisse in der Tabellenwertfunktion db2ext.textsearch begrenzen. |
Weitere Details zu den Parametern finden Sie in DB2EXT.HIGHLIGHT.