Skip to main content
Une requête définit les mots ou combinaisons de mots qu’un document doit contenir. Le langage de requête utilisé par les scripts d’extraction est basé sur XML.

Structure de base d’une requête

Une requête simple se présente ainsi :
Les éléments suivants constituent une requête : L’élément <Contain> peut inclure un nombre quelconque des éléments suivants, dans n’importe quel ordre : Chacun de ces éléments doit contenir l’un des éléments suivants :
L’élément <Contain> doit contenir au moins un élément <Required> ou <Optional>.

Attributs de l’élément Contain

Des restrictions supplémentaires sur les combinaisons de formes de mots peuvent être définies dans les attributs de la balise <Contain>.

Attribut MinCount

Spécifiez le nombre minimal d’éléments dans une combinaison de formes de mots à l’aide de l’attribut MinCount. Chaque élément est soit une forme de mot, soit une chaîne de formes de mots renvoyée par la sous-requête. La valeur par défaut de l’attribut est 1. La valeur de ce paramètre ne doit pas être supérieure au nombre total d’éléments <Required> et <Optional> dans la combinaison de formes de mots. Ce paramètre est utile lorsqu’une combinaison de formes de mots contient un ou plusieurs éléments <Optional>. La requête suivante recherche soit le premier paramètre, soit le second :
La requête suivante permet de trouver au moins trois des quatre mots spécifiés dans la requête, dont deux sont obligatoires :
Cette requête trouve les expressions suivantes : “président des États-Unis Barack Obama”, “président Barack Obama” et “président des États-Unis Obama.”

Attribut KeepOrder

Pour spécifier un ordre fixe d’éléments dans une combinaison de formes de mots, utilisez l’attribut KeepOrder de type booléen. La valeur par défaut de l’attribut est false. La requête suivante indique que l’ordre des éléments est fixe :
La combinaison « first third second third » ne correspondra pas à la requête, même si la requête contient bien une suite de mots dans l’ordre requis. KeepOrder s’applique également à tous les éléments <Except>. Les mots correspondant aux éléments <Except> dans une requête ne doivent pas apparaître entre les mots qu’ils séparent dans la requête. Cependant, ils peuvent apparaître à n’importe quelle autre position en dehors des suites de mots de la requête à ordre fixe. Par exemple, si vous modifiez la requête précédente en plaçant la forme de mot « second » dans un élément <Except> au lieu de <Required>, un document contenant la combinaison de formes de mot « first third second » correspondra à la requête (mais la forme de mot « second » ne sera pas incluse dans le résultat). Si vous supprimez ensuite l’attribut KeepOrder, un document contenant la combinaison de formes de mot « first third second » ne sera pas inclus dans le résultat, car la forme de mot « second » ne doit apparaître nulle part dans le texte du document.

Attributs MinDistance et MaxDistance

Les attributs MinDistance et MaxDistance spécifient les distances minimale et maximale entre les mots d’une requête. Ces attributs n’ont pas de valeur par défaut. Si l’un des deux attributs n’est pas spécifié, aucune contrainte de distance ne s’applique. La distance entre les mots est mesurée en nombre de mots et correspond à la différence entre les positions des deux mots concernés. La distance entre deux mots voisins est égale à 1 ; la valeur minimale de chacun de ces attributs est donc 1. MaxDistance doit être supérieur ou égal à MinDistance. La distance entre deux suites de mots est calculée comme suit. Si les suites ne se chevauchent pas, la distance correspond à la différence entre la position du mot le plus à gauche dans la suite de droite et la position du mot le plus à droite dans la suite de gauche. Si les suites se chevauchent, la distance est considérée comme égale à 0. Par exemple, dans l’expression « The quick brown fox jumped over the lazy dog, », la distance entre les suites « quick fox » et « lazy dog » est de 4, et la distance entre les suites « quick fox » et « brown lazy dog » est de 0. Pour les éléments <Except>, la distance entre les mots est calculée comme suit :
  • Si KeepOrder="true", le mot ne doit pas apparaître à l’intérieur de la distance spécifiée par rapport aux mots voisins dans la suite (c’est-à-dire les mots entre lesquels il apparaît dans la requête). En même temps, la distance entre les voisins de l’élément <Except> doit être comprise dans la plage spécifiée.
  • Si KeepOrder="false", le mot ne doit pas apparaître à l’intérieur de la distance spécifiée par rapport à un autre mot de la suite.
La requête suivante utilise KeepOrder="true" et MaxDistance="2" :
Cette requête permet de trouver des expressions telles que « sodium carborate decahydrate » et « sodium sulfate decahydrate ». La requête suivante utilise KeepOrder="false" et MaxDistance="2" :
Cette requête renvoie uniquement « sodium sulfate decahydrate », car le mot “tetraborate” est placé dans les balises <Except> et que la distance maximale entre “tetraborate” et « sodium » est de deux mots.

Élément Form

Une requête pour une forme de mot est définie à l’aide d’un élément <Form>. Cet élément peut contenir les éléments suivants :
  • <Attributes> — Élément facultatif contenant une requête sur les attributs d’une forme de mot. Pour plus d’informations, consultez Quand utiliser les scripts d’extraction.
  • <Text> — Élément facultatif contenant le texte Unicode d’une forme de mot. Si aucun texte n’est spécifié, tout mot correspondant à la requête sur les attributs correspondra à la requête. Dans ce cas, la requête sur les attributs est obligatoire.
Des conditions de recherche supplémentaires pour une forme de mot peuvent être spécifiées dans les attributs de la balise <Form>.

Attribut SearchType

Le type de recherche de formes de mots peut être spécifié dans l’attribut SearchType de la balise <Form>. Cet attribut peut prendre les valeurs suivantes : L’attribut SearchType est facultatif et sa valeur par défaut est AllFormsSearch.

Attribut CaseSensitive

Pour les recherches sensibles à la casse, utilisez l’attribut CaseSensitive de la balise <Form>. Cet attribut est facultatif et vaut false par défaut. La requête suivante utilise les attributs SearchType et CaseSensitive de la balise <Form> :
Cette requête recherche l’acronyme WHO exactement sous cette forme, ce qui permet d’éviter un grand nombre de résultats redondants contenant « who », « whom » ou « whose ».

Élément Attributes

Une requête sur les attributs des formes de mots est une expression logique construite à l’aide des opérateurs AND, OR et NOT. NOT est un opérateur unaire, tandis que AND et OR sont n-aires. Les opérandes de cette expression logique sont des valeurs de type Bool. Cette expression logique s’écrit sous forme d’arborescence. Le résultat de la requête correspond aux formes de mots du texte d’un document qui satisfont cette expression logique. Pour obtenir les attributs des formes de mots, utilisez un élément <Attributes>. Cet élément peut contenir les éléments suivants : L’élément <Not> est construit de la même manière que l’élément <Attributes> et ne peut contenir qu’un seul de ces éléments. Les éléments <Or> et <And> doivent contenir au moins deux de ces éléments. La balise <Attribute> possède un attribut SearchType facultatif qui spécifie le type de recherche d’attribut. Cet attribut peut avoir les valeurs suivantes :
  • ExactSearch — Recherche l’attribut exactement sous la forme spécifiée dans la requête.
  • PrefixSearch — Recherche tous les attributs commençant par le texte spécifié.
La recherche d’attributs respecte toujours la casse. L’attribut SearchType est défini sur ExactSearch par défaut. Supposons que vous disposiez d’un document dans lequel vous avez déjà identifié :
  • des objets NER, en appelant la fonction ExtractNerObjects
  • des formes de mots à partir d’un dictionnaire utilisateur nommé dictionary, en appelant la fonction ExtractWordsFromUserDictionary
  • tous les objets qui satisfont une expression régulière passée en paramètre, en appelant la fonction ExtractRegularExpression
Supposons que la collection résultante de ces objets soit nommée regExp.
Le nom de la collection peut être utilisé dans les requêtes XML exécutées sur le document indexé. La collection résultante elle-même est accessible par son nom.
Une requête sur les attributs de forme se présente alors comme suit :
Cette requête recherche une expression de deux mots, dans laquelle le premier mot doit correspondre à l’expression régulière spécifiée et le second doit être un nom d’organisation autorisé. Les chiffres placés après les noms d’attributs désignent les mots requis dans les objets à plusieurs mots détectés et indexés avec les attributs correspondants. Par exemple, une expression régulière nommée date peut trouver une date au format « 31 mai 2019 ». Ainsi, date1 correspond au mot « 31 », date2 à « mai » et date3 à « 2019 ».

Élément FormSet

Une requête portant sur plusieurs formes de mot est spécifiée à l’aide d’un élément <FormSet>. Ce type de requête combine plusieurs requêtes portant chacune sur une seule forme à l’aide de OR. Elle est équivalente à une requête <Query> dans laquelle toutes les sous-requêtes sont des requêtes facultatives sur des formes de mot. Avec une requête <FormSet>, vous pouvez toutefois spécifier une requête d’attribut commune à toutes les formes. Cela permet d’effectuer des recherches plus efficaces lorsque ExactSearch est utilisé pour trouver toutes les formes de mot, qu’une requête d’attribut est définie pour chaque forme et que toutes ces requêtes d’attribut ont un fragment commun. Un élément <FormSet> contient les éléments suivants :
  • <Attributes> — Élément facultatif contenant une requête sur les attributs de forme. Cette requête est combinée avec les requêtes d’attribut de forme à l’aide de AND.
  • <Form> — Élément obligatoire contenant une requête sur une forme de mot. Un élément <FormSet> doit contenir au moins un élément <Form>.

Exemple de requête XML d’extraction d’adresse

Le résultat d’une requête d’extraction d’adresse est une chaîne de caractères contenant le premier mot du pays, le premier mot de la rue, le premier mot de la ville, le premier mot de l’État et le premier mot du code ZIP (dans cet ordre, à condition qu’ils ne soient pas espacés de plus de 5 mots). Les mots consécutifs qui composent un composant (par ex. un nom de rue) sont également numérotés dans l’indice, à partir de 1.
Le résultat d’une requête d’extraction d’adresse est enregistré dans le champ répétitif xmlQueryResult :