Dieser Befehl erstellt einen Volltextindex für eine Textspalte zur Verwendung durch DB2 Net Search Extender-Volltextabfragen.
In einer verteilten DB2-Umgebung wird ein Volltextindex in jeder Partition des Tabellenbereichs erstellt, in dem die Benutzertabelle definiert ist. Nachfolgende Änderungen an der Verteilung des Tabellenbereichs sind nicht zulässig und führen zu unvorhergesehenen Funktionsweisen der Verwaltungsbefehle sowie bei Suchoperationen.
Berechtigung
Gemäß den DB2-Katalogsichten muss die Benutzer-ID in diesem Befehl das Zugriffsrecht CONTROL für die Tabelle besitzen, für die der Volltextindex erstellt wurde.
Befehlssyntax
>>-CREATE-INDEX--+-----------------+--indexname FOR TEXT--ON----> '-indexschema-"."-' >--+--------------------+--tabellenname-------------------------> '-tabellenschema-"."-' >--+-(textspaltenname)--------------------------------------------+--> '-+-----------------------+--funktionsname-(-textspaltenname-)-' '-|funktionsschema "."|-' >--+-----------------+--+-----------------------------+---------> '-|attributliste|-' '-|textstandardinformationen|-' >--+---------------------------+--+--------------------+--------> '-|aktualisierungsmerkmale|-' '-|speicheroptionen|-' >--+----------------------------------+-------------------------> '-|optionen-für-suchergebniscache|-' >--+-------------------------------+----------------------------> '-|indexkonfigurationsoptionen|-' >--+-----------------------+----------------------------------->< '-|verbindungsoptionen|-' attributliste: .-','--------------------------------------. V | |--ATTRIBUTES--(----SQL-spaltenausdruck--+-----------------+-+--)--| '-AS-attributname-' textstandardinformationen: |--+--------------+--+-------------------+----------------------> '-CCSID--ccsid-' '-LANGUAGE--sprache-' >--+-------------------------------------------+----------------| '-FORMAT--format--+-----------------------+-' '-|modellinformationen|-' modellinformationen: |--DOCUMENTMODEL--dokumentmodellname--IN--modelldateipfad-------> >--+--------------------+---------------------------------------| '-USING-CCSID--ccsid-' aktualisierungsmerkmale: |--+---------------------------------------------------+--------> '-UPDATE-FREQUENCY--+-NONE------------------------+-' '-|aktualisierungshäufigkeit|-' >--+-|merkmale-für-teilaktualisierung|-+------------------------| '-RECREATE INDEX ON UPDATE----------' merkmale-für-teilaktualisierung: |--+----------------------------------------+-------------------> '-UPDATE-MINIMUM--mindestzahl-änderungen-' >--+---------------------------+--------------------------------> '-REORGANIZE--+-AUTOMATIC-+-' '-MANUAL----' >--+----------------------------------+-------------------------| +-COMMITCOUNT-FOR-UPDATE--anzahl---+ '-|merkmale-für-erfassungstabelle|-' merkmale-für-erfassungstabelle: |--REPLICATION-CAPTURE-TABLE------------------------------------> >--+------------------------------+--erfassungstabellenname-----> '-erfassungstabellenschema-"."-' >--CONTROL TABLE SCHEMA--erfassungssteuerungsschema-------------| aktualisierungshäufigkeit: |--D--(--+-*---------+--)--H--(--+-*----------+--)--M-----------> | .-,-----. | | .-,------. | | V | | | V | | '---0...6-+-' '---0...23-+-' .-,------. V | >--(----0...59-+--)---------------------------------------------| speicheroptionen: |--+------------------------------+-----------------------------> '-INDEX-DIRECTORY--verzeichnis-' >--+------------------------------------+-----------------------> '-WORK-DIRECTORY--arbeitsverzeichnis-' >--+------------------------------------------------+-----------| '-ADMINISTRATION-TABLES-IN--tabellenbereichsname-' optionen-für-suchergebniscache: |--CACHE TABLE--------------------------------------------------> .-','---------------------------------------. V | >--(----SQL-spaltenausdruck--+------------------+-+--)----------> '-AS--attributname-' >--+---------------------------------+--------------------------> +-PERSISTENT--+-----------------+-+ | '-IN--verzeichnis-' | '-TEMPORARY-----------------------' >--+----------------------+-------------------------------------> '-PCTFREE--prozentsatz-' >--MAXIMUM CACHE SIZE--speichergröße----------------------------> >--+-------------------------------------------------------------+--> '-INITIAL SEARCH RESULT ORDER--(--SQL-sortieren-nach-liste--)-' >--+---------------------------------------------------------+--| '-KEY COLUMNS FOR INDEX ON VIEW--(SQL-spaltennamensliste)-' indexkonfigurationsoptionen: .-,-----------. V | |--INDEX CONFIGURATION--(----optionswert-+--)-------------------| verbindungsoptionen: |--CONNECT-TO--datenbankname--+------------------------------------+--| '-USER--benutzer-id--USING--kennwort-'
Befehlsparameter
Einzelheiten finden Sie in Anhang C, Net Search Extender-Informationskataloge. Beachten Sie, dass der Indexname ein gültiger DB2-Indexname sein muss.
Beachten Sie, dass die folgenden Einschränkungen zu berücksichtigen sind, wenn der Tabellenname keine DB2-Basistabelle bezeichnet:
Wenn die Spalte keinen dieser Datentypen aufweist, geben Sie eine Umsetzungsfunktion der Form funktionsschema.funktionsname an, um den Datentyp umzuwandeln.
Beachten Sie, dass bei Verwendung einer DataLink-Spalte der Inhalt, auf den verwiesen wird, für die Indexierung abgerufen wird. Dazu wird das Protokoll verwendet, das im DataLink-Wert angegeben ist, z. B. Http. Wenn Sie andere Protokolle als "file" oder "unc" verwenden, müssen Sie sicherstellen, das diese von den Servern unterstützt werden, die in den DataLink-Werten angegeben sind. Da eventuell Proxy-Server zum Abrufen des Dateiinhalts erforderlich sind, kann der Datenbankadministrator diese Server vor der Indexerstellung in der Tabelle DB2EXT.PROXYINFORMATION angeben.
Beachten Sie, dass für Spalten mehrere Indizes zulässig sind, jedoch nur, wenn die folgenden Bedingungen erfüllt sind:
Daher spielt es in diesem Fall keine Rolle, welcher Index mit dem Argument CONTAINS , SCORE oder NUMBEROFMATCHES ausgewählt wird.
Ermitteln Sie die Attributnamen für Ausdrücke anhand der folgenden Regeln:
Beispiel: ATTRIBUTES (CAST(JULIAN_DAY(date) AS DOUBLE) as day, (price1+price2)/2 as avg_price)
Beachten Sie, dass Attribute ohne Anführungszeichen in Großbuchstaben umgesetzt werden und in dieser Form bei der Suche angegeben werden müssen.
Informationen für Formate strukturierter Dateien können Sie in einer Dokumentmodelldatei angeben. Wenn keine Dokumentmodelldatei angegeben ist, wird der Text des Dokuments mit Hilfe eines Standarddokumentmodells indexiert. Siehe Dokumentmodelle.
Wenn das Schlüsselwort FORMAT nicht angegeben wird, wird der Standardwert der Sicht DB2EXT.DBDEFAULTS mit dem Argument DEFAULTNAME='FORMAT' entnommen.
Da in Suchbedingungen nicht auf Dokumentmodelle verwiesen werden muss, verwenden Sie stattdessen alle Abschnittsnamen in der Modelldatei. Einzelheiten zu Dokumentmodellen finden Sie in Kapitel 9, Arbeiten mit strukturierten Dokumenten. Beachten Sie, dass das Dokumentmodell nur bei der Ausführung des Befehls CREATE INDEX gelesen wird. Alle späteren Änderungen werden im Index nicht berücksichtigt.
Beachten Sie, dass in einer verteilten DB2-Umgebung der modelldateipfad für alle Knoten zugänglich sein muss. Daher ist ein gemeinsames Dateisystem zu verwenden.
Der Standardwert wird der Sicht DB2EXT.DBDEFAULTS mit dem Argument DEFAULTNAME='UPDATEFREQUENCY' entnommen.
Beachten Sie, dass dieser Wert in einem Befehl DB2TEXT UPDATE ignoriert wird. Diese Option kann nicht mit der Option RECREATE INDEX ON UPDATE verwendet werden, da die Anzahl von Änderungen nicht ohne eine Protokolldatei und Auslöser für die Teilaktualisierung (inkrementelle Aktualisierung) verfügbar ist.
Bei verteilten Datenbanken wird der Wert für UPDATE MINIMUM auf jedem Knoten geprüft.
REORGANIZE MANUAL kann nur über einen manuellen UPDATE-Befehl mit der Option REORGANIZE ausgeführt werden.
Wenn die Klausel REORGANIZE nicht angegeben wird, wird der Standardwert der Sicht DB2EXT.DBDEFAULTS mit dem Argument DEFAULTNAME='AUTOMATICREORG' entnommen.
Weitere Informationen zur Option REORGANIZE finden Sie in UPDATE INDEX.
Das Erfassungssteuerungsschema ist der Schemaname der Replikationssteuertabellen im lokalen DB-System, z. B. IBMSNAP_PRUNE_SET. Die Replikationssteuertabellen müssen nach der Einrichtung der Replikation im lokalen DB2-System vorhanden sein.
Es müssen mindestens Kurznamen für die folgenden Erfassungssteuertabellen vorhanden sein:
Da die DB2 Replikationszentrale nicht automatisch sicherstellt, dass lokale Kurznamen für eine ferne Erfassungstabelle und für die Replikationssteuertabellen erstellt werden, muss diese Aufgabe auf ähnliche Weise manuell ausgeführt werden wie die Erstellung eines Kurznamens für die Tabelle, auf deren Grundlage der Textindex erstellt werden soll.
Die Spaltennamen der Primärschlüsselspalten im Kurznamen der Benutzertabelle und im Kurznamen der Erfassungstabelle müssen übereinstimmen. Außerdem dürfen die Namen der Spalten IBMSNAP_OPERATION, IBMSNAP_COMMITSEQ und IBMSNAP_INTENTSEQ im Kurznamen der Erfassungstabelle nicht geändert werden.
Nach der Indexerstellung verweist sowohl der Spaltenname DB2EXT.TEXTINDEXES(LOGVIEWNAME) als auch der Spaltenname DB2EXT.TEXTINDEXES(LOGVIEWSCHEMA) auf den lokalen Namen der Replikationserfassungstabelle.
Da Net Search Extender nicht die gesamte Funktionalität der DB2 Replikationszentrale benötigt, muss die CD-Tabelle (CD = Change Data) bzw. die CCD-Tabelle (CCD = Consistent Change Data) die folgenden Regeln erfüllen:
Außerdem müssen folgende Voraussetzungen erfüllt sein:
Anmerkungen und Einschränkungen |
---|
Stellen Sie sicher, dass der korrekte Quellentabellenname in die Registrierungstabelle eingefügt wird. Abhängig vom Typ des fernen Datenbankverwaltungssystems (DBMS) muss der ferne Tabellenname oder der lokale Kurzname verwendet werden:
Es ist eine Benutzerzuordnung erforderlich, die dem lokalen Benutzer den Zugriff auf die ferne Datenquelle mit Hilfe von Kurznamen ermöglicht. Der ferne Benutzer muss das Zugriffsrecht CONTROL für die Tabellen besitzen. Wenn die Benutzer-ID des DB2-Exemplareigners von der lokalen Benutzer-ID abweicht, ist eine zusätzliche Benutzerzuordnung für die Benutzer-ID des DB2-Exemplareigners erforderlich. Der angegebene Basistabellenname darf keine Sicht auf einen Kurznamen sein. Eine Sicht kann nämlich eine Sicht auf mehrere Kurznamen sein und außerdem können mehrere CD- und CCD-Tabellen beteiligt sein. Da in der Replikationserfassungsklausel nur eine CD- oder CCD-Tabelle angegeben werden kann, kann eine Sicht auf Kurznamen nicht unterstützt werden. Auch können Kurznamen in fernen Sichten nicht unterstützt werden, da der Primärschlüssel fehlt. Die CD- bzw. CCD-Tabelle muss als Kurzname definiert sein. Die Verwendung einer Sicht oder eines Aliasnamens ist hingegen nicht zulässig. Weitere Informationen zum DB2 Replikation Referenzhandbuch Version 8 finden Sie in Zugehörige Informationen. |
Der Wert für COMMITCOUNT FOR UPDATE für den Index ist in DB2EXT.TEXTINDEXES.COMMITCOUNT zu finden. Dieser Wert kann für jeden Index mit Hilfe des Befehls ALTER INDEX geändert werden. Er gilt auch für die Aktualisierungsverarbeitung, die mit Hilfe der Angabe UPDATE FREQUENCY festgelegt wird. Der Wert 0 bedeutet, dass die Aktualisierung in einer Transaktion abgeschlossen wird. Werte >0 geben die Anzahl von Dokumenten an, die in einer Transaktion zu verarbeiten sind.
Die Verwendung von commitcount hat Auswirkungen auf die Systemleistung. Weitere Informationen hierzu finden Sie im Abschnitt Leistungsaspekte.
Anmerkung |
---|
Es werden keine Auslöser für die Benutzertabelle und keine Protokolltabelle erstellt. |
Der Standardwert wird der Sicht DB2EXT.DBDEFAULTS mit dem Argument DEFAULTNAME='INDEXDIRECTORY' entnommen. In dem Verzeichnis wird ein Unterverzeichnis namens NODE<nr> erstellt, um Indizes auf logischen Knoten eines Servers zu unterscheiden.
Beachten Sie, dass dieses Verzeichnis in einer verteilten DB2-Umgebung auf jedem physischen Knoten vorhanden sein muss.
Der Standardwert wird der Sicht DB2EXT.DBDEFAULTS mit dem Argument DEFAULTNAME='WORKDIRECTORY' entnommen. In dem Verzeichnis wird ein Unterverzeichnis namens NODE<nr> erstellt, um Indizes auf logischen Knoten eines Servers zu unterscheiden.
Beachten Sie, dass dieses Verzeichnis in einer verteilten DB2-Umgebung auf jedem physischen Knoten vorhanden sein muss.
Im Fall eines Kurznamens oder einer Sicht wird ein Standardtabellenbereich durch DB2 gewählt.
Wenn Textindizes auf der Grundlage von Sichten, Kurznamen oder Textindizes für die Suche über eine gespeicherte Prozedur in einer verteilten DB2-Umgebung erstellt werden, muss sich der gesamte Tabellenbereich auf nur einem Knoten befinden.
Definieren Sie die SQL-Spaltenausdrücke mit Spaltennamen ohne Qualifikationsmerkmal der Tabelle, für die der Index erstellt wird. Die zulässigen SQL-Spaltenausdruckstypen sind integrierte und benutzerdefinierte einzigartige Datentypen. Die Spaltennamen in der Ergebnismenge werden durch folgende Regeln bestimmt:
Der Datentyp CLOB wird nicht als Cachedatentyp unterstützt. Diesen Datentyp müssen Sie in den Datentyp VARCHAR umsetzen.
Anmerkung |
---|
Beachten Sie, dass der Befehl CREATE INDEX einen Fehler liefert, wenn die Spaltennamen in der Ergebnismenge nicht disjunkt sind. Beachten Sie außerdem, dass die im Cache gespeicherte Tabelle nach der Erstellung nicht implizit aktiviert wird. Zum Beispiel ist eine Suche über eine gespeicherte Prozedur nicht möglich, bevor der Befehl DB2TEXT ACTIVATE CACHE ausgeführt wird. |
Diese Option 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.
Beachten Sie, dass bei keiner Angabe des Verzeichnisses der Standardwert der Sicht DB2EXT.DBDEFAULTS mit dem Argument DEFAULTNAME='CACHEDIRECTORY' entnommen wird.
Die maximale Cachegröße für die verschiedenen Plattformen beträgt:
Weitere Informationen finden Sie unter Anhang B, Nutzen großer Speicherkapazitäten.
Details finden Sie in ACTIVATE CACHE.
Weitere Informationen finden Sie in Kapitel 16, Suchfunktion über gespeicherte Prozedur.
Anmerkung |
---|
Die Indexreihenfolge kann für neue oder geänderte Dokumente nach einer Teilaktualisierung nicht gewährleistet werden. Beispiel: INITIAL RESULT ORDER(length(spalte1) asc, spalte2+spalte3 desc) |
Da diese Eindeutigkeit nicht durch DB2 wie bei Primärschlüsseln überprüft werden kann, ist es die Aufgabe des Benutzers, eine gleichwertige Eindeutigkeit sicherzustellen. Die angegebenen Spalten bilden einen Teil der Protokolltabelle für den Index.
Option | Werte | Beschreibung |
TreatNumbersAsWords | 0 oder 1 | Interpretiert Folgen von Ziffern als separate Wörter, auch wenn sie neben Buchstaben stehen. Zum Beispiel bedeutet der Standardwert 0, dass 'tea42at5' als ein Wort betrachtet wird. |
IndexStopWords | 0 oder 1 | Beachtet oder ignoriert Stoppwörter beim Indexieren. Gegenwärtig ist die Stoppwörterliste eine UCS-2-Datei mit dem Namen <sprache>.tsw im Verzeichnis <exemplar>/sqllib/db2ext/resources. Änderungen an dieser Datei sind nach der Erstellung des Indexes wirkungslos. Beachten Sie außerdem, dass <sprache> der Wert für LANGUAGE aus dem Befehl CREATE INDEX ist. |
UpdateDelay | Sekunden | Gibt die Zeitdauer in Sekunden an, die für Teilaktualisierungen ohne Erfassungstabellen benötigt wird. Nur Einträge, die älter als diese Zeitdauer sind, werden aus der Protokolltabelle entnommen. Hierdurch soll der Verlust von Aktualisierungen verhindert werden, z. B. bei Dokumentänderungen, die in Transaktionsszenarios, in denen Benutzertransaktionen zu Problemen mit Aktualisierungsbefehlen führen, nicht im Index wiedergegeben werden. Aus diesem Grund sollte für den Parameter UpdateDelay die maximal zulässige Zeitdauer einer Benutzerschreibtransaktion für die Tabelle angegeben werden, für die der Index erstellt wurde. |
Die Einträge in diesen Tabellen werden durch die Spalten eindeutig identifiziert:
Weitere Informationen zu den Spalten finden Sie auf Seite ***.
Benutzung
Zur Erstellung eines Volltextindexes ist ein Primärschlüssel in der Benutzertabelle erforderlich. In DB2 Net Search Extender Version 8.1 kann ein mehrspaltiger DB2-Primärschlüssel ohne Typeinschränkung verwendet werden. Bei der Tabellenwertsuche sind jedoch keine zusammengesetzten Primärschlüssel zulässig.
Die Anzahl der Primärschlüsselspalten ist auf 14, die Gesamtlänge aller Primärschlüsselspalten auf 1024 - 14 = 1010 Byte begrenzt.
Anmerkung |
---|
Beachten Sie, dass nach der Erstellung des Indexes die Länge der Primärschlüsselspalten oder der Sichtschlüsselspalten nicht durch ALTER TABLE-Befehle geändert werden darf. Die Synchronisation zwischen der Benutzertabelle, dem Volltextindex und der im Cache gespeicherten Ergebnistabelle wird während der Ausführung des Befehls UPDATE INDEX durchgeführt. Weitere Informationen finden Sie in UPDATE INDEX. |