Cette commande crée un index en texte intégral sur une colonne de texte en vue d'une utilisation dans des requêtes en texte intégral de DB2 Extension Net Search.
Dans un environnement DB2 réparti, un index en texte intégral est créé sur chaque partition de l'espace table sur lequel la table utilisateur est définie. Les modifications ultérieures de la répartition de l'espace table ne sont pas autorisées et mènent à un comportement inattendu dans les commandes d'administration et lors du processus de la recherche.
Autorisation
Selon les vues de catalogue DB2, l'ID utilisateur de cette commande doit disposer des droits CONTROL sur la table sur laquelle l'index en texte intégral a été créé.
Syntaxe de commande
>>-CREATE-INDEX--+-----------------+--nom-index FOR TEXT--ON----> '-schéma-index"."-' >--+------------------+--nom-table------------------------------> '-schéma-table-"."-' >--+-(nom-colonne-texte)-------------------------------------------+--> '-+-----------------------+--nom-fonction-(-nom-colonne-texte-)-' '-|schéma-fonction "."|-' >--+-------------------+--+---------------------------------+---> '-|liste-attributs|-' '-|informations-par-défaut-texte|-' >--+--------------------------------+--+--------------------+---> '-|caractéristiques-mise-à-jour|-' '-|options-stockage|-' >--+-------------------------------------+----------------------> '-|options-résultats-recherche-cache|-' >--+-------------------------------+--+---------------------+-->< '-|options-configuration-index|-' '-|options-connexion|-' liste-attributs: .-','-----------------------------------------. V | |--ATTRIBUTES--(----expression-colonne-SQL--+-----------------+-+--)--| '-AS-nom-attribut-' informations-par-défaut-texte: |--+--------------+--+------------------+-----------------------> '-CCSID--ccsid-' '-LANGUAGE--langue-' >--+-------------------------------------------+----------------| '-FORMAT--format--+-----------------------+-' '-|informations-modèle|-' informations-modèle: |--DOCUMENTMODEL--nom-modèle-document--IN--chemin-fichier-modèle--> >--+--------------------+---------------------------------------| '-USING-CCSID--ccsid-' caractéristiques-mise-à-jour: |--+-----------------------------------------------+------------> '-UPDATE-FREQUENCY--+-NONE--------------------+-' '-|fréquence-mise-à-jour|-' >--+-|caractéristiques-mise-à-jour-incrémentielle|-+------------| '-RECREATE INDEX ON UPDATE----------------------' caractéristiques-mise-à-jour-incrémentielle: |--+------------------------------------------+-----------------> '-UPDATE-MINIMUM--nombre-min-modifications-' >--+---------------------------+--------------------------------> '-REORGANIZE--+-AUTOMATIC-+-' '-MANUAL----' >--+----------------------------------+-------------------------| +-COMMITCOUNT-FOR-UPDATE--nombre---+ '-|caractéristiques-table-capture|-' caractéristiques-table-capture: |--REPLICATION-CAPTURE-TABLE------------------------------------> >--+--------------------------+--nom-table-capture--------------> '-schéma-table-capture-"."-' >--CONTROL TABLE SCHEMA--schéma-contrôle-capture----------------| fréquence-mise-à-jour: |--D--(--+-*---------+--)--H--(--+-*----------+--)--M-----------> | .-,-----. | | .-,------. | | V | | | V | | '---0...6-+-' '---0...23-+-' .-,------. V | >--(----0...59-+--)---------------------------------------------| options-stockage: |--+-----------------------------+------------------------------> '-INDEX-DIRECTORY--répertoire-' >--+---------------------------------------+--------------------> '-WORK-DIRECTORY--répertoire-de-travail-' >--+--------------------------------------------+---------------| '-ADMINISTRATION-TABLES-IN--nom-espace-table-' options-résultats-recherche-cache: |--CACHE TABLE--------------------------------------------------> .-','------------------------------------------. V | >--(----expression-colonne-SQL--+------------------+-+--)-------> '-AS--nom-attribut-' >--+--------------------------------+---------------------------> +-PERSISTENT--+----------------+-+ | '-IN--répertoire-' | '-TEMPORARY----------------------' >--+----------------------+-------------------------------------> '-PCTFREE--pourcentage-' >--MAXIMUM CACHE SIZE--taille-mémoire---------------------------> >--+--------------------------------------------------------+---> '-INITIAL SEARCH RESULT ORDER--(--ordre-SQL-par-liste--)-' >--+--------------------------------------------------------+---| '-KEY COLUMNS FOR INDEX ON VIEW--(liste-nom-colonne-SQL)-' options-configuration-index: .-,-------------. V | |--INDEX CONFIGURATION--(----valeur-option-+--)-----------------| options-connexion: |--CONNECT-TO--nom-de-base-de-données--+-------------------------------------------+--| '-USER--id-utilisateur--USING--mot-de-passe-'
Paramètres de commande
Pour plus de détails, reportez-vous à l'Annexe C, Catalogues d'informations DB2 Extension Net Search. Notez que le nom de l'index doit être un nom d'index DB2 valide.
Notez que si le nom de table ne fait pas référence à une table de base DB2, les restrictions suivantes sont appliquées :
Si le type de la colonne n'est pas l'un de ceux-là, spécifiez une fonction de transformation à l'aide de schéma-fonction.nom-fonction pour convertir le type de colonne.
Notez que, si vous utilisez une colonne Data Link, le contenu référencé doit être extrait pour l'indexation. Cette opération a lieu via le protocole qui fait partie de la valeur Data Link, par exemple Http. Si vous utilisez des protocoles différents de "file" ou "unc", assurez-vous qu'ils sont pris en charge par des serveurs faisant partie des valeurs Data Link. Comme des serveurs proxy peuvent être nécessaires pour extraire le contenu du fichier, l'administrateur de base de données peut les spécifier dans la table DB2EXT.PROXYINFORMATION avant la création de l'index.
Notez que plusieurs index sont autorisés sur les mêmes colonnes, mais seulement dans les conditions suivantes :
Ainsi, peu importe l'index choisi par les arguments CONTAINS, SCORE ou NUMBEROFMATCHES.
Déterminez les noms d'attribut pour les expressions en respectant les règles suivantes :
Par exemple : ATTRIBUTES (CAST(JULIAN_DAY(date) AS DOUBLE) as day, (price1+price2)/2 as avg_price)
Notez que les attributs sans guillemet sont mappés en majuscules et doivent être spécifiés de cette façon pendant la recherche.
Pour les formats de documents structurés, vous pouvez spécifier des informations dans un fichier de modèle de document. Si aucun modèle de document n'est spécifié, le texte du document est indexé à l'aide du modèle de document par défaut. Reportez-vous à la section Modèles de document.
Si le mot clé du format n'est pas spécifié, la valeur par défaut est tirée de la vue DB2EXT.DBDEFAULTS dans laquelle DEFAULTNAME='FORMAT'.
Comme les modèles de documents n'ont pas besoin d'être référencés dans les conditions de recherche, utilisez à la place tous les noms de section dans le fichier modèle. Pour plus de détails sur les modèles de documents, reportez-vous au Chapter 9, Utilisation de documents structurés. Notez que comme le modèle de document est en lecture seule pendant la commande CREATE INDEX, toutes les modifications ultérieures ne sont pas reconnues pour cet index.
Notez que dans un environnement DB2 réparti, le chemin-fichier-modèle doit être accessible sur chaque noeud à l'aide d'un système de fichiers partagés.
La valeur par défaut est tirée de la vue DB2EXT.DBDEFAULTS dans laquelle DEFAULTNAME='UPDATEFREQUENCY'.
Notez que cette valeur est ignorée dans une commande DB2TEXT UPDATE. Cette option ne peut pas être utilisée avec l'option RECREATE INDEX ON UPDATE, comme le nombre de modifications n'est pas disponible sans table de journalisation, ni déclencheurs de mise à jour incrémentielle.
Pour des bases de données réparties, l'option UPDATE MINIMUM est vérifiée sur tous les noeuds.
REORGANIZE MANUAL ne peut être effectué qu'avec une commande UPDATE manuelle, à l'aide de l'option REORGANIZE.
Si la clause REORGANIZE est omise, la valeur par défaut est tirée de la vue DB2EXT.DBDEFAULTS dans laquelle DEFAULTNAME='AUTOMATICREORG'.
Pour plus d'informations sur l'option REORGANIZE, reportez-vous à la section UPDATE INDEX.
Le schéma-contrôle-capture correspond au nom de schéma des tables de contrôle de réplication, par exemple IBMSNAP_PRUNE_SET sur le système DB2 local. Les tables de contrôle de réplication doivent être disponibles en tant qu'alias de type nickname sur le système DB2 local après la configuration de la réplication.
Des alias de type nickname doivent être disponibles au minimum pour les tables de contrôle de capture suivantes :
Comme le Centre de réplication DB2 ne garantit pas automatiquement la création d'alias de type nickname locaux pour une table de capture éloignée et des tables de contrôle de capture, cela peut être fait manuellement.Cette tâche est similaire à la création d'un alias de type nickname pour la table sur laquelle l'index de texte est créé.
Les noms des colonnes de clé primaire dans l'alias de type nickname de table utilisateur et l'alias de type nickname de table de capture doivent correspondre. De plus, les noms des colonnes IBMSNAP_OPERATION, IBMSNAP_COMMITSEQ et IBMSNAP_INTENTSEQ ne doivent pas être modifiées dans l'alias de type nickname de la table de capture.
Après la création de l'index, les noms de colonne DB2EXT.TEXTINDEXES(LOGVIEWNAME) et DB2EXT.TEXTINDEXES(LOGVIEWSCHEMA) font référence au nom local de la table de capture de réplication.
Comme l'Extension Net Search ne requiert pas toutes les fonctionnalités du Centre de réplication DB2, la table CD ou CCD doit satisfaire aux règles suivantes :
Les autres conditions requises incluent les éléments suivants :
Remarques et restrictions |
---|
Assurez-vous d'insérer le nom correct de la table source dans la table d'enregistrement. Selon le type de Système de gestion de base de données, il faut utiliser le nom de table éloigné ou l'alias de type nickname local :
Un mappage utilisateur doit exister pour que l'utilisateur local puisse accéder à la source de données éloignée via des alias de type nickname et l'utilisateur éloigné doit disposer des droits de contrôle sur les tables. Si l'ID utilisateur du propriétaire d'instance DB2 est différent de l'ID utilisateur local, un mappage utilisateur supplémentaire pour l'ID utilisateur du propriétaire d'instance DB2 est nécessaire. Le nom de la table de base spécifié ne doit pas être une vue sur un alias de type nickname. Ceci est dû au fait qu'une vue peut être sur plusieurs alias de type nickname et que plusieurs tables CD et CCD peuvent être également impliquées. Du fait qu'une seule table CD ou CCD peut être spécifiée dans la clause de capture de réplication, une vue sur des alias de type nickname ne peut pas être prise en charge. En outre, des alias de type nickname sur une vue éloignée ne peuvent pas être pris en charge car la clé primaire est manquante. La table CD ou CCD doit être un alias de type nickname et ne peut pas être une vue ou un alias. |
Pour plus d'informations sur le manuel DB2 Replication Guide and Reference Version 8, reportez-vous à la section Informations connexes.
La valeur COMMITCOUNT FOR UPDATE destinée à l'index figure dans DB2EXT.TEXTINDEXES.COMMITCOUNT. Elle peut être modifiée pour chaque index, à l'aide de la commande ALTER INDEX. Elle s'applique également au traitement de la mise à jour planifiée en fonction de la spécification de la commande UPDATE FREQUENCY. Une valeur égale à 0 signifie que la mise à jour est terminée dans une transaction, avec des valeurs supérieures à 0 spécifiant le nombre de documents à traiter dans une transaction.
L'utilisation du nombre de validations a des effets sur les performances. Pour plus d'informations, reportez-vous à la section Remarques sur les performances.
Remarque |
---|
Aucun déclencheur n'est créé sur la table utilisateur et aucune table de journalisation n'est créée. |
La valeur par défaut est tirée de la vue DB2EXT.DBDEFAULTS, dans laquelle DEFAULTNAME=INDEXDIRECTORY'. Un sous-répertoire, NODE<nr>, est créé sous le répertoire pour distinguer les index sur des noeuds logiques d'un serveur.
Notez que dans un environnement DB2 réparti, ce répertoire doit exister sur chaque noeud physique.
La valeur par défaut est tirée de la vue DB2EXT.DBDEFAULTS, dans laquelle DEFAULTNAME='WORKDIRECTORY'. Un sous-répertoire, NODE<nr>, est créé sous le répertoire pour distinguer les index sur des noeuds logiques d'un serveur.
Notez que dans un environnement DB2 réparti, ce répertoire doit exister sur chaque noeud physique.
Dans le cas d'un alias de type nickname ou d'une vue, un espace table par défaut est choisi par DB2.
Lors de la création d'index de texte sur des vues, des alias de type nickname ou d'index de texte pour une recherche de procédure mémorisée dans un environnement DB2 réparti, l'espace table ne doit posséder qu'un seul noeud.
Définissez les expressions de la colonne SQL à l'aide de noms de colonne non qualifiés de la table sur laquelle l'index est créé. Les types d'expression de la colonne SQL autorisés sont tous les types distincts intégrés et définis par l'utilisateur. Les noms de colonne dans le jeu de résultats sont déterminés en respectant les règles suivantes :
Les types de données CLOB ne sont pas pris en charge comme types de données de mémoire cache. Vous devez les transtyper VARCHARS.
Remarque |
---|
Notez que si les noms de colonne du jeu de résultats ne sont pas disjoints, la commande CREATE INDEX renvoie une erreur. Notez également que la table mise en cache n'est pas implicitement activée après création. Par exemple, la recherche par procédure mémorisée n'est pas possible tant que la commande DB2TEXT ACTIVATE CACHE n'a pas été effectuée. |
Cette option peut être utilisée dans un environnement DB2 réparti, uniquement si la table utilisateur est stockée dans un espace table ne possédant qu'un seul noeud.
Notez que si le répertoire n'est pas spécifié, la valeur par défaut est tirée de la vue db2ext.dbdefaults, dans laquelle DEFAULTNAME='CACHEDIRECTORY'.
Les valeurs limites de la taille maximale de la mémoire cache pour les différentes plateformes sont les suivantes :
Pour plus d'informations, reportez-vous à la section Annexe B, Utilisation de grandes quantités de mémoire.
Pour plus de détails, voir ACTIVATE CACHE.
Pour plus d'informations, reportez-vous au Chapter 16, Fonction de recherche de procédure mémorisée.
Vous ne pouvez travailler avec des index pré-enregistrés que si vous utilisez l'interface de recherche de procédure mémorisée.
Remarque |
---|
L'ordre de l'index ne peut pas être garanti pour les documents nouveaux ou modifiés après une mise à jour incrémentielle. Par exemple : INITIAL RESULT ORDER(length(column1) asc, column2+column3 desc) |
Comme ce caractère unique ne peut pas être vérifié par DB2 comme dans le cas de clés primaires, il incombe à l'utilisateur d'assurer le caractère unique équivalent. Les colonnes spécifiées constituent une partie de la table de journalisation pour l'index.
Option | Valeurs | Description |
TreatNumbersAsWords | 0 ou 1 | Interprète les séquences de chiffres comme des mots distincts, même si elles sont adjacentes à des caractères. Par exemple, la valeur par défaut 0 signifie que tea42at5 est considéré comme un mot. |
IndexStopWords | 0 ou 1 | Considère ou ignore les mots vides lors de l'indexation. Actuellement, la liste de mots vides se trouve dans un fichier UCS-2 <langue>.tsw dans le répertoire <instance>/sqllib/db2ext/resources. Les modifications sur ce fichier n'ont aucun effet après la création de l'index. Notez également que <langue> correspond à la valeur LANGUAGE de la commande CREATE INDEX. |
UpdateDelay | secondes | Indique la durée en secondes pour une mise à jour incrémentielle sans tables de capture. Seules les entrées antérieures à cette durée seront prises dans la table de journalisation. Ainsi vous éviterez les mises à jour perdues, par exemple, des modifications de document qui ne sont pas reflétées dans l'index dans les scénarios de transaction où les transactions de l'utilisateur interfèrent avec les commandes de mise à jour. Par conséquent, le paramètre UpdateDelay doit être défini à une durée maximale d'une transaction d'écriture utilisateur sur la table sur laquelle l'index a été créé. |
Les entrées de ces tables sont identifiées de manière unique par les colonnes :
Reportez-vous à la page *** pour plus d'informations sur les colonnes.
Usage
La création d'un index en texte intégral requiert une clé primaire sur la table utilisateur. Dans DB2 Extension Net Search Version 8.1, une clé primaire DB2 comportant plusieurs colonnes peut être utilisée sans restriction de type. Cependant, pour utiliser la recherche de valeur table, aucune clé primaire composée n'est autorisée.
Le nombre de colonnes de clé primaire est limité à 14, la longueur totale de toutes les colonnes de clé primaire est limitée à 1024 - 14 = 1010 octets.
Remarque |
---|
Après la création de l'index, la longueur des colonnes de clé primaire ou de vue ne doit pas être modifiée par les commandes ALTER TABLE. La synchronisation entre la table utilisateur, l'index en texte intégral et la table de résultats mise en cache est réalisée pendant la commande UPDATE INDEX. Pour plus d'informations, reportez-vous à la section UPDATE INDEX. |