En plus des fonctions de recherche de procédure mémorisée et de recherche scalaire SQL, l'Extension Net Search fournit deux fonctions de valeur table SQL qui ressemblent beaucoup à la procédure mémorisée.
Les deux fonctions de valeur table s'appellent db2ext.textsearch. Le seul point qui les différencie est que l'une prend en charge la fonction HIGHLIGHT et comporte deux paramètres supplémentaires numberOfHits et hitInformation.
Notez que vous ne pouvez pas utiliser la fonction de valeur table sur des tables avec un clé primaire composée.
Pour plus d'informations sur l'utilisation de la fonction HIGHLIGHT, reportez-vous à la section DB2EXT.HIGHLIGHT.
Remarque |
---|
La fonction valeur table 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. Vous devez également vous assurer que vous vous connectez au bon noeud en utilisant la variable d'environnement DB2NODE. |
Syntaxe de la fonction
1. db2ext.textsearch sans prise en charge de HIGHLIGHT db2ext.textSearch ( query VARCHAR(4096), indexSchema VARCHAR(128), indexName VARCHAR(128), resultFirstRow INTEGER, resultNumberRows INTEGER, primKeyBinding <supported types>,// same type as primary key ) return table ( primKey <supported types>,// same type as primary key numberOfMatches INTEGER, score DOUBLE, totalNbResults INTEGER ) 2. db2ext.textsearch avec prise en charge de HIGHLIGHT db2ext.textSearch ( query VARCHAR(4096), indexSchema VARCHAR(128), indexName VARCHAR(128), resultFirstRow INTEGER, resultNumberRows INTEGER, primKeyBinding <supported types>,// same type as primary key numberOfHits INTEGER ) return table ( primKey <supported types>,// same type as primary key numberOfMatches INTEGER, score DOUBLE, totalNbResults INTEGER hitInformation BLOB(20K) )
Paramètres de fonction
Les paramètres suivants sont les paramètres d'entrée :
Notez que le chiffre 0 identifie la première ligne dans la liste des résultats de la requête.
Notez que ceci est différent du paramètre correspondant au nombre maximal de résultats qui détermine la taille maximale de la liste des résultats de la requête.
En outre, le paramètre détermine la portée de la recherche de texte. Si primaryKeyBinding a pour valeur NULL ("CAST(NULL as <type1>)", la portée de la recherche sera tous les documents stockés dans l'index. Il est également possible de limiter la recherche aux documents auxquels primaryKeyBinding est lié.
Par exemple, si primaryKeyBinding a pour valeur CAST(5 as BIGINT), la recherche est limitée à un seul document avec la valeur de clé primaire BIGINT égale à "5".
Notez que seules les clés primaires de colonnes uniques de types suivants sont prises en charge : SMALLINT, INTEGER, BIGINT, REAL, DOUBLE, VARCHAR FOR BIT DATA, DATE, TIME et TIMESTAMP.
Notez que ce paramètre est nécessaire uniquement pour la construction d'informations HIGHLIGHT requises par la fonction db2ext.highlight.
Paramètres de fonction
Les valeurs renvoyées énoncées ci-dessous sont stockées dans une table temporaire qui doit être jointe à la table normale, pour le cas où d'autres résultats seraient demandés. Notez que les valeurs NUMBEROFMATCHES, SCORE, TOTALNUMBEROFRESULTS et HITINFORMATION ne sont calculées que si elles sont demandées dans l'instruction select.
Notez également que si vous utilisez STOP SEARCH AFTER ou RESULT LIMIT avec la syntaxe SCORE dans une requête, ce nombre n'est plus fiable.
Notez que cette valeur est renvoyée uniquement si vous spécifiez la valeur de numberOfHits.
Avec la fonction de valeur table SQL, vous pouvez effectuer des recherches dans des vues, de la même façon qu'avec la recherche de procédure mémorisée. Cependant, aucune mémoire partagée n'est nécessaire, ainsi l'index n'a pas besoin d'être activé.
Cette fonction est principalement destinée aux utilisateurs ayant utilisé une requête SQL dans la recherche de procédure mémorisée. Cependant, uniquement une clé primaire de colonne seule est prise en charge sur des tables de base.
L'exemple suivant montre comment travailler dans une table de clé primaire à plusieurs colonnes :
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
Dans cet exemple, vous devez d'abord créer une vue sur cette table avec une seule clé unique, puis créer l'index sur la vue.
Pour obtenir un exemple d'utilisation de la fonction de valeur table avec la fonction db2ext.highlight, reportez-vous à la page ***.