IBM Books
(C) IBM Corp. 2003

DB2 Net Search Extender Verwaltung und Programmierung

DB2EXT.TEXTSEARCH

Neben der Suche über eine gespeicherte Prozedur und den skalaren SQL-Suchfunktionen stellt Net Search Extender zwei SQL-Tabellenwertfunktionen (Table Valued Function = TVF) bereit, die der gespeicherten Prozedur stark ähneln.

Beide Tabellenwertfunktionen heißen db2ext.textsearch. Der einzige Unterschied besteht darin, dass eine Funktion die Funktion HIGHLIGHT unterstützt und zwei zusätzliche Parameter, numberOfHits und hitInformation, besitzt.

Hierbei ist zu beachten, dass die Tabellenwertfunktion für Tabellen mit einem zusammengesetzten Primärschlüssel nicht verwendet werden darf.

Informationen zur Verwendung der Funktion HIGHLIGHT finden Sie unter DB2EXT.HIGHLIGHT.

Anmerkung

Die Tabellenwertfunktion kann in einer verteilten DB2-Umgebung nur dann verwendet werden, wenn die Benutzertabelle in einem Tabellenbereich gespeichert wird, der sich komplett auf einem Knoten befindet. Außerdem müssen Sie über die Umgebungsvariable DB2NODE sicherstellen, dass Sie die Verbindung zum richtigen Knoten herstellen.

Funktionssyntax

1. db2ext.textsearch ohne Unterstützung für HIGHLIGHT
 
                
db2ext.textSearch
                (
                query	   	        VARCHAR(4096),
                indexSchema   	   VARCHAR(128),
                indexName        	VARCHAR(128),
                resultFirstRow   	INTEGER,
                resultNumberRows 	INTEGER,
                primKeyBinding   	<unterstützte typen>,// selber Typ wie Primärschlüssel
                )
 
                return table
                (
                primKey           <unterstützte typen>,// selber Typ wie Primärschlüssel
                numberOfMatches   INTEGER,
                score             DOUBLE,
                totalNbResults    INTEGER
                )
 
 
2. db2ext.textsearch mit Unterstützung für HIGHLIGHT
 
 
db2ext.textSearch
                (
                query	   	        VARCHAR(4096),
                indexSchema       VARCHAR(128),
                indexName        	VARCHAR(128),
                resultFirstRow   	INTEGER,
                resultNumberRows 	INTEGER,
                primKeyBinding   	<unterstützte typen>,// selber Typ wie Primärschlüssel
                numberOfHits      INTEGER
                )
 
                return table
                (
                primKey           <unterstützte typen>,// selber Typ wie Primärschlüssel
                numberOfMatches   INTEGER,
                score             DOUBLE,
                totalNbResults    INTEGER
                hitInformation    BLOB(20K)
                )
 
 

Funktionsparameter

Die Eingabeparameter sind folgende.

Query
Dieser Parameter nimmt die Abfrage auf. Weitere Informationen finden Sie in Kapitel 14, Syntax für Suchargumente.

indexSchema, indexName
Gibt den zu durchsuchenden Index an. Weitere Informationen finden Sie unter CREATE INDEX.

resultFirstRow
Die Ergebnisliste der Abfrage (query) wird in Teilen zurückgegeben. Dieser Parameter beschreibt, welche Zeile der Abfrageergebnisliste die erste Zeile ist, die in die Ergebnistabelle der Tabellenwertfunktion eingefügt werden soll. Der Wert sollte >= 0 sein.

Beachten Sie, dass die Ziffer 0 die erste Zeile in der Abfrageergebnisliste kennzeichnet.

resultNumberRows
Dieser Parameter beschreibt, wie viele Zeilen der Abfrageergebnisliste in die Ergebnistabelle der Tabellenwertfunktion eingefügt werden sollen, wobei 0 bedeutet, dass alle Ergebnisse zurückzugeben sind.

Beachten Sie, dass sich dieser Wert von dem Abfrageparameter zur Begrenzung des Ergebnisses unterscheidet, der die maximale Größe der Abfrageergebnisliste festlegt.

primaryKeyBinding
Der Typ dieses Parameters legt den Typ des Ausgabeparameters primaryKey fest. Wenn der Textindex für eine Basistabelle mit einem Primärschlüsseltyp <typ1> erstellt wurde, muss der Parameter primaryKeyBinding ebenfalls den Typ <typ1> haben.

Darüber hinaus bestimmt der Parameter den Geltungsbereich der Textsuche. Wenn der Parameter primaryKeyBinding auf NULL ("CAST(NULL as <typ1>)" gesetzt wird, erstreckt sich der Geltungsbereich der Suche auf alle im Index gespeicherten Dokumente. Alternativ können Sie die Suche auf die Dokumente beschränken, an die sie durch den Parameter primaryKeyBinding gebunden wird.

Wenn primaryKeyBinding zum Beispiel auf den Wert CAST(5 as BIGINT) gesetzt wird, beschränken Sie die Suche auf ein einziges Dokument mit dem Primärschlüsselwert "5" des Typs BIGINT.

Beachten Sie, dass nur einspaltige Primärschlüssel der folgenden Typen unterstützt werden: SMALLINT, INTEGER, BIGINT, REAL, DOUBLE, VARCHAR FOR BIT DATA, DATE, TIME und TIMESTAMP.

numberOfhits
Diese Option gibt die maximale Anzahl von Treffern an, die von der Funktion db2ext.textsearch zurückgegeben wurden und für die Informationen bereitgestellt werden sollen. Bei Angabe von 0 werden die Informationen für maximal 1100 Treffer bereitgestellt. Dieser Prozess kann relativ zeitaufwändig sein.

Beachten Sie, dass dieser Parameter nur für die Erstellung der Hervorhebungsinformationen benötigt wird, die für die Funktion db2ext.highlight erforderlich sind.

Funktionsparameter

Die folgenden Rückgabewerte werden in einer temporären Tabelle gespeichert, die mit Ihrer normalen Tabelle verknüpft werden muss, wenn weitere Ergebnisse angefordert werden. Beachten Sie, dass die Werte für NUMBEROFMATCHES, SCORE, TOTALNUMBEROFRESULTS und HITINFORMATION nur berechnet werden, wenn sie in Ihrer SELECT-Anweisung angefordert werden.

primKey
Der Primärschlüssel des gefundenen Dokuments.

numberofmatches
NUMBEROFMATCHES ist ein INTEGER-Wert, der die Anzahl von Übereinstimmungen angibt, die für die einzelnen Dokumente ermittelt wurden.

score
SCORE liefert einen DOUBLE-Wert. Je häufiger das Vorkommen des Suchbegriffs in einem Dokument, desto höher der SCORE-Wert (Quote) des Dokuments.

totalNumberOfResults
Die Abfrageergebnisliste gibt an, wie viele Ergebnisse gefunden wurden. Beachten Sie, dass jede Zeile den gleichen Wert aufweist.

Beachten Sie auch, dass diese Zahl nicht mehr zuverlässig ist, wenn Sie STOP SEARCH AFTER oder RESULT LIMIT zusammen mit der SCORE-Syntax in einer Abfrage verwenden.

hitInformation
Die von db2ext.textsearch zurückgegebenen Trefferinformationen werden für die Verarbeitung der Hervorhebungen benötigt. Derzeit kann dieser Ausgabeparameter Trefferinformationen für etwa 1100 Treffer enthalten. Wenn die Anzahl der Treffer diesen Schwellenwert übersteigt, werden die Trefferinformationen für diese überzähligen Treffer ignoriert.

Beachten Sie, dass dieser Wert nur zurückgegeben wird, wenn Sie einen Wert für numberOfHits angeben.

Benutzung

Mit Hilfe der SQL-Tabellenwertfunktion sind Sie in der Lage, Sichten in gleicher Weise zu durchsuchen, wie dies durch die Suche über eine gespeicherte Prozedur möglich ist. Jedoch ist kein gemeinsamer Speicher erforderlich, so dass der Index nicht aktiviert werden muss.

Diese Funktion ist in erster Linie für Benutzer gedacht, die eine SQL-Abfrage innerhalb der Suche über eine gespeicherte Prozedur verwendet haben. Eine Einschränkung besteht jedoch darin, dass nur ein einspaltiger Primärschlüssel für Basistabellen unterstützt wird.

Das folgende Beispiel zeigt den Umgang mit einer Tabelle mit einem mehrspaltigen Primärschlüssel:

select s.id from 
db2ext.sample s, table (db2ext.textSearch(
        '"characteristics"',
         'DB2EXT',
         'COMMANDS',
         1,
         20,
         cast(NULL as INTEGER))) t 
where s.id = t.primkey

In diesem Beispiel müssen Sie zunächst eine Sicht auf diese Tabelle mit einem eindeutigen einspaltigen Schlüssel und anschließend den Index für diese Sicht erstellen.

Ein Beispiel für die Verwendung der SQL-Tabellenwertfunktion mit der Funktion db2ext.highlight finden Sie auf Seite ***.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]