Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez créer un index de recherche en texte intégral sur des colonnes XML qui indexent le contenu des valeurs XML, mais ignorent le balisage XML. Les balises d’élément sont utilisées comme limites de jeton. Les éléments suivants sont indexés :
Contenu des éléments XML.
Contenu des attributs XML de l’élément de niveau supérieur uniquement, sauf si ces valeurs sont des valeurs numériques.
Si possible, vous pouvez combiner la recherche en texte intégral avec l’index XML de la manière suivante :
Tout d’abord, filtrez les valeurs XML intéressantes à l’aide de la recherche en texte intégral SQL.
Ensuite, interrogez ces valeurs XML qui utilisent l’index XML sur la colonne XML.
Exemple : combinaison de la recherche en texte intégral avec l’interrogation XML
Une fois l’index de recherche en texte intégral créé sur la colonne XML, la requête suivante vérifie qu’une valeur XML contient le mot « personnalisé » dans le titre d’un livre :
SELECT *
FROM T
WHERE CONTAINS(xCol,'custom')
AND xCol.exist('/book/title/text()[contains(.,"custom")]') =1
La méthode contains() utilise l’index de recherche en texte intégral pour sous-ensemble des valeurs XML qui contiennent le mot « personnalisé » n’importe où dans le document. La clause exist() garantit que le mot « personnalisé » se produit dans le titre d’un livre.
Une recherche en texte intégral qui utilise contains() et XQuery contains() a une sémantique différente. Ce dernier est une correspondance de sous-chaîne et l’ancien correspond à une correspondance de jeton qui utilise la recherche de recherche. Par conséquent, si la recherche concerne la chaîne qui a « run » dans le titre, les correspondances incluront « run », « runs » et « running », car la recherche en texte intégral contains() et l'Xquery contains() sont satisfaites. Toutefois, la requête ne correspond pas au mot « personnalisable » dans le titre, car le texte intégral contains() échoue, mais le Xquery contains() est satisfait. En règle générale, pour une correspondance de sous-chaîne pure, la clause de texte intégral contains() doit être supprimée.
En outre, la recherche en texte intégral utilise la recherche en texte intégral, mais XQuery contient() est une correspondance littérale. Cette différence est illustrée dans l’exemple suivant.
Exemple : Recherche en texte intégral sur des valeurs XML à l'aide du stemming
La vérification XQuery contient() qui a été effectuée dans l’exemple précédent ne peut généralement pas être supprimée. Prenons par exemple la requête suivante :
SELECT *
FROM T
WHERE CONTAINS(xCol,'run')
Le mot « couru » dans le document correspond à la condition de recherche en raison de la racinisation. En outre, le contexte de recherche n’est pas vérifié à l’aide de XQuery.
Lorsque XML est décomposé en colonnes relationnelles à l’aide d’AXSD indexés en texte intégral, les requêtes XPath qui se produisent sur la vue XML n’effectuent pas de recherche en texte intégral sur les tables sous-jacentes.