DB2EXT.TEXTSEARCH (für die Suche über eine gespeicherte Prozedur)

Funktionssyntax

db2ext.TextSearch(

        IN      query                   VARCHAR(4096),
        IN      indexSchema             VARCHAR(128),
        IN      indexName               VARCHAR(128),
        IN      resultFirstRow          INTEGER,
        IN      resultNumberRows        INTEGER,
        IN      scoringFlag             INTEGER,
        IN      searchTermCountsFlag    INTEGER,
        OUT     searchTermCounts        VARCHAR(4096),
        OUT     totalNumberOfResults    INTEGER ) 

Funktionsparameter

Es gibt folgende Eingabeparameter.

query
Nimmt die Abfrage auf. Syntax für Suchargumente enthält weitere Informationen hierzu.
indexSchema, indexName
Gibt den zu durchsuchenden Index an. Siehe CREATE INDEX.
resultFirstrow
Die Abfrageergebnisliste wird in Teilen zurückgegeben. Dieser Parameter beschreibt, welche Zeile der Abfrageergebnisliste die erste Zeile ist, die in die Ergebnismenge der gespeicherten Prozedur eingefügt werden soll. Die erste Zeile in der Abfrageergebnisliste ist durch die Ziffer 0 gekennzeichnet.
resultNumberRows
Dieser Parameter beschreibt, wie viele Zeilen der Abfrageergebnisliste in die Ergebnismenge der gespeicherten Prozedur eingefügt werden sollen.

Dieser Parameter ist nicht mit dem Ergebnisbegrenzungsausdruck (RESULT LIMIT) in der Abfrage zu verwechseln, der die maximale Größe der Abfrageergebnisliste festlegt.

Der Wert sollte >= 0 sein. Dabei bedeutet 0, dass alle Ergebnisse zurückzugeben sind.

Anmerkung

Wenn eine größere Ergebnismenge angefordert wird, stellen Sie sicher, dass ein Tabellenbereich für temporäre Benutzertabellen verfügbar ist. Wenn keiner verfügbar ist, erstellen Sie einen Tabellenbereich. Im folgenden Beispiel wird ein Tabellenbereich auf einer UNIX-Plattform erstellt:

db2 "create user temporary tablespace tempts managed by system 
            using ('/work/tempts.ts')"
scoringFlag
Der Wert 0 bedeutet, dass keine Quoten ermittelt werden, der Wert 1, dass Quoten ermittelt werden. Wenn die Ermittlung von Quoten erforderlich ist, wird eine zusätzliche Spalte mit den Quotenwerten zurückgegeben, wobei der höchste Wert zuerst zurückgegeben wird.
searchTermCountsFlag
Dieser Parameter steuert die Verarbeitung des Parameters searchTermCounts. Wenn der Parameter den Wert 0 aufweist, wird der Wert des Parameters searchTermCounts nicht berechnet.

Funktionsparameter

Es gibt folgende Ausgabeparameter.

searchTermCounts
Die Anzahl von Vorkommen der einzelnen Abfragesuchbegriffe im Index. Diese Zahlen werden als eine durch Leerzeichen getrennte Liste in der Reihenfolge der Suchbegriffe in der Abfrage zurückgegeben.

Weitere Informationen finden Sie unter searchTermCountsFlag.

totalNumberOfResults
Die Gesamtzahl von Ergebnissen, die in der Abfrageergebnisliste zu finden sind.

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

Verwendung

Die Spalten in der Ergebnismenge, die von der gespeicherten Prozedur zurückgegeben werden, werden durch die Option CACHE TABLE des Befehls DB2TEXT CREATE INDEX definiert. Wenn scoringFlag=1 ist, wird eine Spalte des Typs DOUBLE hinzugefügt. Diese Spalte enthält den SCORE-Wert.

Mit den folgenden Optionen können Sie die Leistung einer zweiten Abfrage verbessern, deren Abfragezeichenfolge mit der der ersten Abfrage identisch ist. Beachten Sie, dass dazu ein anderes Cursorfenster ohne totalNumberOfResults erforderlich ist:

Um sicherzustellen, dass Sie für die Suche eine Verbindung zu dem korrekten Knoten herstellen, muss unter Umständen die Umgebungsvariable DB2NODE gesetzt werden.

Verwenden Sie unter UNIX hierzu den folgenden Befehl:

export DB2NODE=<no>

Hierbei ist zu beachten, dass alle physischen Knoten über eine synchronisierte Uhrzeit verfügen müssen.

Verwenden Sie unter Windows den folgenden Befehl:

set DB2NODE= <no>
Anmerkung

Eine abgeschirmte Benutzer-ID, die ungleich der Exemplareigner-ID ist, funktioniert nicht mit partitionierten Datenbanken.