Structure de base d’une requête
Une requête simple se présente ainsi :
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’attributMinCount. 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 :
Attribut KeepOrder
Pour spécifier un ordre fixe d’éléments dans une combinaison de formes de mots, utilisez l’attributKeepOrder 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 :
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 attributsMinDistance 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.
KeepOrder="true" et MaxDistance="2" :
KeepOrder="false" et MaxDistance="2" :
<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.
<Form>.
Attribut SearchType
Le type de recherche de formes de mots peut être spécifié dans l’attributSearchType 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’attributCaseSensitive 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> :
É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é.
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 fonctionExtractWordsFromUserDictionary - tous les objets qui satisfont une expression régulière passée en paramètre, en appelant la fonction
ExtractRegularExpression
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 est accessible par son nom.
Une requête sur les attributs de forme se présente alors comme suit :
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.xmlQueryResult :
