Opérateurs FQL (FAST Query Language)
Dernière modification : vendredi 1 juillet 2011
S’applique à : SharePoint Server 2010
Dans cet article
Vue d’ensemble des opérateurs FQL
AND
ANDNOT
ANY
COUNT
DATETIME
ENDS-WITH
EQUALS
FILTER
FLOAT
INT
NEAR
NOT
ONEAR
OR
PHRASE
RANGE
RANK
STARTS-WITH
STRING
XRANK
Les opérateurs FQL (FAST Query Language) sont des mots clés qui spécifient des opérations booléennes ou autres contraintes d’opérandes. La syntaxe d’opérateur FQL est la suivante :
[property-spec:]operator(operand [,operand]* [, parameter="value"]*)
Dans la syntaxe :
property-spec est une spécification de propriété facultative suivie de l’opérateur « in ».
operator est un mot clé qui spécifie une opération à effectuer.
operand est une expression de terme ou un autre opérateur.
parameter est le nom d’une valeur qui modifie le comportement de l’opérateur.
value est la valeur à utiliser pour le nom de paramètre.
Les noms d’opérateurs, les noms de paramètres et les valeurs de texte de paramètres ne respectent pas la casse. Les espaces sont autorisés dans le corps de l’opérateur, mais sont ignorés s’ils ne sont pas placés entre guillemets doubles.
Vue d’ensemble des opérateurs FQL
Le langage FQL prend en charge les types d’opérateurs suivants :
Type |
Description |
Opérateurs |
---|---|---|
Chaîne |
Vous permet de spécifier des opérations de requêtes sur une chaîne de termes. Il s’agit de l’opérateur le plus couramment utilisé sur des termes textuels. |
|
Booléen |
Vous permet de combiner des termes et des sous-expressions dans une requête. |
|
Proximité |
Vous permet de spécifier la proximité des termes de requêtes dans une séquence de texte correspondante. |
|
Numérique |
Vous permet de spécifier des conditions numériques dans la requête. |
|
Pertinence |
Vous permet d’affecter l’évaluation de pertinence d’une requête. |
Le tableau suivant répertorie les opérateurs pris en charge.
Opérateur |
Description |
Type |
---|---|---|
Renvoie uniquement les éléments qui satisfont à tous les opérandes AND. |
Booléen |
|
Renvoie uniquement les éléments qui satisfont au premier opérande et qui ne satisfont pas aux opérandes suivants. |
Booléen |
|
Semblable à l’opérande OR, hormis le fait que le classement dynamique (le score de pertinence dans le jeu de résultats) n’est affecté ni par le nombre d’opérandes qui correspondent, ni par la distance entre les termes dans l’élément. |
Booléen |
|
Vous permet de spécifier le nombre d’occurrences de terme de requête qu’un élément doit inclure pour être renvoyé comme résultat. L’opérande peut être un terme de requête unique, une expression ou un terme de requête générique. |
Booléen |
|
Fournit un typage explicite de valeurs numériques. La conversion de type explicite est facultative et généralement non nécessaire. Le type du terme de requête est détecté en fonction du type de la propriété gérée numérique cible. |
Numérique |
|
Spécifie qu’un mot ou une expression doit apparaitre à la fin d’une propriété gérée. |
Proximité |
|
Spécifie qu’un mot, un terme d'expression ou une expression doit fournir une correspondance de jeton exacte avec la propriété gérée. |
Proximité |
|
Utilisé pour interroger des métadonnées ou autres données structurées. |
Pertinence |
|
Fournit un typage explicite de valeurs numériques. La conversion de type explicite est facultative et généralement non nécessaire. Le type du terme de requête est détecté en fonction du type de la propriété gérée numérique cible. |
Numérique |
|
Fournit un typage explicite de valeurs numériques. La conversion de type explicite est facultative et généralement non nécessaire. Le type du terme de requête est détecté en fonction du type de la propriété gérée numérique cible. |
Numérique |
|
Limite le jeu de résultats aux éléments qui ont N termes à une certaine distance les uns des autres. |
Proximité |
|
Renvoie uniquement les éléments qui ne satisfont pas à l’opérande. Celui-ci peut être toute expression FQL valide. |
Booléen |
|
Variant ordonnancé de NEAR qui requiert une correspondance ordonnancée des termes. L’opérateur ONEAR peut être utilisé pour restreindre le jeu de résultats aux éléments qui ont N termes à une certaine distance les uns des autres. |
Proximité |
|
Renvoie uniquement les éléments qui satisfont à au moins un des opérandes OR. Les éléments qui correspondent obtiennent un classement dynamique plus élevé (score de pertinence dans le jeu de résultats) si davantage d’opérandes OR sont satisfaits. |
Booléen |
|
Renvoie uniquement les éléments qui correspondent à une chaîne de jetons exacte. |
Proximité |
|
Autorise les expressions de mise en correspondance de plage. L’opérateur RANGE s’utilise pour les propriétés gérées numériques et de date/heure. |
Numérique |
|
Vous permet d’augmenter le classement dynamique des éléments en fonction de certaines occurrences de termes sans modifier les éléments correspondant à la requête. Une expression RANK contient un composant qui doit correspondre et un ou plusieurs composants qui contribuent uniquement au classement dynamique. |
Pertinence |
|
Spécifie qu’un mot ou une expression doit apparaitre au début d’une propriété gérée. |
Proximité |
|
Définit une condition de mise en correspondance booléenne à une chaîne de texte. |
Chaîne |
|
Vous permet d’augmenter le classement dynamique des éléments en fonction de certaines occurrences de termes sans modifier les éléments correspondant à la requête. Une expression XRANK contient un composant qui doit correspondre et un ou plusieurs composants qui contribuent uniquement au classement dynamique. Cet opérateur est semblable à l’opérateur RANK, mais présente des caractéristiques de performances et un contrôle de la contribution au classement différents. |
Pertinence |
AND
Renvoie uniquement les éléments qui satisfont à tous les opérandes AND. Les opérandes peuvent être un terme unique ou toute sous-expression FQL valide.
Syntaxe
and(operand, operand [, operand]*)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index de texte intégral par défaut contient « cat », « dog » et « fox ».
and(cat, dog, fox)
ANDNOT
Renvoie uniquement les éléments qui satisfont au premier opérande et qui ne satisfont pas aux opérandes suivants. Les opérandes peuvent être un terme unique ou toute sous-expression FQL valide.
Syntaxe
andnot(operand, operand [,operand]*)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index de texte intégral par défaut contient « cat », mais pas « dog ».
andnot(cat, dog)
Exemple 2. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index de texte intégral par défaut contient « dog », mais ni « beagle » ni « chihuahua ».
andnot(dog, beagle, chihuahua)
ANY
Semblable à l’opérande OR, hormis le fait que le classement dynamique (le score de pertinence dans le jeu de résultats) n’est affecté ni par le nombre d’opérandes qui correspondent, ni par la distance entre les termes dans l’élément. Les opérandes peuvent être un terme unique ou toute sous-expression FQL valide.
Le composant de classement dynamique pour cette partie de la requête est basé sur le terme de meilleure correspondance dans l’expression ANY.
Notes
La différence par rapport à OR est uniquement liée au classement dans le jeu de résultat. Le même jeu total d’éléments correspondra à la requête.
Syntaxe
any(operand, operand [,operand]*)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index de texte intégral par défaut contient « cat » ou « dog ».
Si l’index contient à la fois « cat » et « dog », mais que « cat » est considéré comme une meilleure correspondance, le classement dynamique de l’élément est basé uniquement sur « cat » et « dog » n’est pas pris en compte.
any(cat, dog)
COUNT
Spécifie le nombre d’occurrences de terme de requête qu’un élément doit inclure pour être renvoyé comme résultat. L’opérande peut être un terme de requête unique, une expression ou un terme de requête générique.
Syntaxe
property-spec:count(operand [,from=<numeric value>, to=<numeric value>])
Paramètres
Paramètre |
Valeur |
Description |
---|---|---|
from |
<valeur_numérique> |
La valeur du paramètre from doit être un entier positif qui spécifie le nombre minimal de fois que l’opérande spécifié doit être mis en correspondance. Si le paramètre from n’est pas spécifié, aucune limite inférieure n’existe. |
to |
<valeur_numérique> |
La valeur du paramètre to doit être un entier positif qui spécifie le nombre maximal (non inclus) de fois que l’opérande spécifié doit être mis en correspondance. Par exemple, une valeur to égale à 11 spécifie 10 fois ou moins. Si le paramètre to n’est pas spécifié, aucune limite supérieure n’existe. |
Exemples
Exemple 1. L’expression suivante établit une correspondance avec au moins cinq occurrences du mot « cat ».
count(cat, from=5)
Exemple 2. L’expression suivante établit une correspondance avec entre cinq et neuf occurrences du mot « cat ».
count(cat, from=5, to=10)
DATETIME
Fournit un typage explicite de valeurs de date/heure. L’opérande est une chaîne de date/heure mise en forme conformément à la syntaxe spécifiée dans Expressions de requête de date et d’heure.
La conversion de type explicite est facultative et généralement non nécessaire. Le type du terme de requête est détecté en fonction du type de la propriété gérée numérique cible.
Syntaxe
datetime(<date/time string>)
Paramètres
Non applicable.
ENDS-WITH
Spécifie qu’un mot ou une expression doit apparaitre à la fin d’une propriété gérée (correspondance de limite).
La correspondance de limite n’est pas prise en charge sur les propriétés gérées numériques. Celles-ci seront toujours soumises à une mise en correspondance exacte ou de plage de valeurs.
Certaines applications peuvent exiger que vous soyez en mesure d’effectuer une mise en correspondance exacte d’une propriété gérée. Par exemple, il peut s’agir d’une propriété gérée product name dans laquelle le nom complet d’un produit est une sous-chaîne d’un autre nom de produit.
Syntaxe
ends-with(<term or phrase>)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments possédant les valeurs « Mr Adam Jones » et « Adam Jones » dans la propriété gérée « author ». Elle n’établit aucune correspondance avec les éléments ayant la valeur « Adam Jones sr ».
author:ends-with("adam jones")
Remarques
La mise en correspondance de limite peut être appliquée à tout le texte de la propriété gérée ou à des chaînes spécifiques dans une propriété gérée qui contient une liste de valeurs de chaîne, par exemple une liste de noms. Dans ce cas, vous souhaiterez peut-être établir une correspondance avec le contenu exacte de chaque chaîne et éviter la mise en correspondance de requête à travers les limites de chaînes.
Pour appliquer des requêtes de mise en correspondance de limite, vous devez configurer la propriété gérée appropriée dans le schéma d’index.
L’activation de la fonctionnalité Mise en correspondance de limite pour la propriété gérée vous permet d’effectuer les opérations suivantes :
utiliser des requêtes de mise en correspondance de limite explicites ;
empêcher la mise en correspondance d'expressions à travers les limites de chaînes. Pour les propriétés gérées qui contiennent plusieurs chaînes, cette fonctionnalité permet de s’assurer qu’une chaîne n’est pas mise en correspondance avec des mots situés avant ou après une indication de limite.
EQUALS
Spécifie qu’un mot ou une expression doit fournir une correspondance de jeton exacte avec la propriété gérée.
Syntaxe
equals(<term or phrase>)
Paramètres
Non applicable.
Exemples
Exemple 1. L’exemple suivant établit une correspondance avec les éléments possédant les valeurs « Adam Jones » dans la propriété gérée « author ». Elle n’établit aucune correspondance avec les éléments ayant la valeur « Adam Jones sr » ou « Mr Adam Jones ».
author:equals("adam jones")
Remarques
Voir aussi ENDS-WITH.
FILTER
Utilisé pour interroger des métadonnées ou autres données structurées.
L’utilisation de l’opérateur FILTER implique automatiquement ce qui suit pour la requête spécifiée :
linguistics="OFF" ;
le classement sera désactivé ;
Aucune mise en surbrillance de requête ne sera utilisée dans le résumé de résultats pour le résultat de requête.
Conseil |
---|
Si vous utilisez l’opérateur STRING dans une expression FILTER, par défaut la linguistique est désactivée. Vous pouvez activer le traitement linguistique dans chaque expression STRING à l’intérieur de FILTER à l’aide de l’opérande linguistics="ON". |
Syntaxe
filter(<any valid FQL operator expression>)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments qui ont une propriété gérée title qui contient « sonata » et une propriété gérée doctype qui contient uniquement le jeton « audio ». Aucune mise en correspondance linguistique n’est effectuée sur « Audio ». Le filtre FILTER étant utilisé pour la mise en correspondance d’« Audio », ce texte ne sera pas mis en surbrillance dans le résumé de résultats.
and(title:sonata, filter(doctype:equals("audio")))
Remarques
Si vous devez restreindre votre requête de façon à établir une correspondance avec au moins une valeur parmi un grand ensemble de valeurs entières dans une propriété numérique, vous pouvez exprimer cela de deux manières fonctionnellement équivalentes :
and(string("hello world"), filter(property-spec:or(1, 20, 453, ... , 3473)))
and(string("hello world"), filter(property-spec:int("1 20 453 ... 3473", mode="or")))
Le second exemple utilise l’opérateur INT en plaçant une chaîne avec l’ensemble de valeurs numériques entre guillemets doubles. Cela augmente sensiblement les performances de requête lors du filtrage avec un grand ensemble de valeurs numériques.
Si vous devez utiliser un grand ensemble de valeurs, utilisez des valeurs numériques plutôt que des valeurs de chaîne et exprimez vos quantités à l’aide de la syntaxe optimisée.
FLOAT
Fournit un typage explicite de valeurs numériques à virgule flottante. L’opérande est une valeur à virgule flottante conforme à la syntaxe spécifiée dans Expressions numériques.
La conversion de type explicite est facultative et généralement non nécessaire. Le type du terme de requête est détecté en fonction du type de la propriété gérée numérique cible.
Syntaxe
float(<floating point value>)
Paramètres
Non applicable.
INT
Fournit un typage explicite de valeurs entières. L’opérande est une valeur entière conforme à la syntaxe spécifiée dans Expressions numériques.
La conversion de type explicite est facultative et généralement non nécessaire. Le type du terme de requête est détecté en fonction du type de la propriété gérée numérique cible.
L’opérateur INT peut également servir à exprimer un ensemble de valeurs entières comme arguments d’opérateurs FQL booléens. Cela constitue un moyen efficace de fournir un ensemble de valeurs entières dans une requête, car les valeurs passées à l’aide de l’opérateur INT ne sont pas analysées par l’analyseur de requête FQL mais passées directement au composant de mise en correspondance de requête.
Syntaxe
int(<integer value>)
int("value, value, … , value")
La première syntaxe spécifie un seul entier. La deuxième syntaxe spécifie une liste de valeurs entières séparées par des virgules et placées entre guillemets doubles.
Paramètres
Non applicable.
Exemples
Exemple 1. Si vous devez restreindre votre requête de façon à établir une correspondance avec au moins une valeur parmi un grand ensemble de valeurs entières dans une propriété numérique, vous pouvez exprimer cela au moyen de l’opérateur INT :
and(string("hello world"), filter(id:int("1 20 49 124 453 985 3473", mode="or")))
NEAR
Limite le jeu de résultats aux éléments qui ont N termes à une certaine distance les uns des autres.
L’ordre des termes de requête n’a aucune importance pour la mise en correspondance. Seule la distance importe.
Une quantité quelconque de termes peuvent être combinés avec les opérateurs NEAR.
Les opérandes NEAR peuvent être des termes uniques, des phrases ou des expressions à opérateur booléen OR ou ANY. Les caractères génériques sont acceptés.
Si plusieurs opérandes de l’opérateur NEAR correspondent au même jeton indexé, ils sont considérés comme proches les uns des autres.
Syntaxe
near(arg, arg [, arg]* [, N=<numeric value>])
Paramètres
Paramètre |
Valeur |
Description |
---|---|---|
N |
<valeur_numérique> |
Spécifie la quantité maximale de mots autorisée à figurer entre les termes (proximité explicite). Si NEAR inclut plus de deux opérandes, la quantité maximale de mots autorisée entre les termes (N) est comptée à l’intérieur de l’expression entière. Par défaut : 4 |
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les chaînes qui contiennent à la fois « cat » et « dog » si ces deux termes ne sont pas séparés de plus de quatre jetons indexés (valeur par défaut).
near(cat, dog)
Exemple 2. L’expression suivante établit une correspondance avec les chaînes qui contiennent « cat », « dog », « fox » et « wolf » si ces termes ne sont pas séparés de plus de quatre jetons indexés.
near(cat, dog, fox, wolf)
Le tableau suivant contient des exemples de valeurs de chaîne de propriété gérée et indique si elles correspondent à l’expression précédente dans l’Exemple 2.
Correspondance ? |
Texte |
---|---|
Oui |
The picture shows a cat, a dog, a fox, and a wolf. |
Oui (avec recherche de radical) |
Dogs, foxes, and wolves are canines, but cats are felines. |
Non |
The picture shows a cat with a dog, a fox, and a wolf. |
L’expression suivante établit une correspondance avec toutes les chaînes du tableau ci-dessus.
near(cat, dog, fox, wolf, N=5)
Exemple 3. L’expression suivante établit une correspondance avec une propriété gérée qui contient uniquement le jeton indexé « clarinet » car « c*t » et « clarinet » correspondent tous deux et sont considérés comme proches l’un de l’autre, même si les deux jetons de recherche correspondent au même jeton indexé.
near("c*t", "clarinet")
Remarques
Considérations relatives à la distance entre les termes NEAR/ONEAR
N indique la quantité maximale de mots autorisée à figurer entre les termes de requête dans le segment de mise en correspondance de l’élément. Si NEAR ou ONEAR inclut plus de deux opérandes, la quantité maximale de mots autorisée à figurer entre les termes de requête (N) est comptée à l’intérieur du segment de l’élément correspondant à tous les termes NEAR ou ONEAR.
NEAR ou ONEAR opère sur du texte sous forme de jeton. Cela signifie que les caractères spéciaux tels que les virgules (« , »), les points (« . »), les signes deux-points (« : »), et les points virgules (« ; ») sont traités comme des espaces. Le terme « distance » fait référence aux jetons dans le texte indexé.
Si vous utilisez ONEAR ou NEAR avec des opérandes égaux, l’opérateur fonctionne comme suit :
near(a, a, n=x)
Cette requête renverra toujours la valeur true si au moins une instance de « a » apparaît dans le contexte. Cela signifie également que NEAR ne peut pas être utilisé comme opérateur COUNT. Pour plus d’informations sur le comptage des occurrences de termes, voir l’opérateur COUNT.
NEAR appliqué à des expressions établit également une correspondance avec des expressions qui se chevauchent dans le texte.
Si un jeton dans le segment de correspondance met en correspondance plus d’un opérande avec l’expression NEAR ou ONEAR, la requête peut correspondre même si le nombre de jetons ne correspondant pas dans le segment de correspondance dépasse la valeur de « N » dans l’expression d’opérateur NEAR ou ONEAR. Par exemple, un chevauchement peut être constitué par des expressions qui se chevauchent. Si le nombre de correspondances de chevauchement de jeton est « O », la requête correspond si pas plus de « N+O » jetons non correspondants figurent dans le segment de correspondance de l’élément.
NEAR ou ONEAR** avec NOT**
L’opérateur NOT ne peut pas être utilisé à l’intérieur de l’opérateur NEAR ou ONEAR. La syntaxe FQL suivante est incorrecte :
near(audi,not(bmw),n=2)
NOT
Renvoie uniquement les éléments qui ne satisfont pas à l’opérande. Celui-ci peut être toute expression FQL valide.
Syntaxe
not(operand)
Paramètres
Non applicable.
ONEAR
Variant ordonnancé de NEAR qui requiert une correspondance ordonnancée des termes. L’opérateur ONEAR peut être utilisé pour restreindre le jeu de résultats aux éléments qui ont N termes à une certaine distance les uns des autres.
Syntaxe
onear(arg, arg [, arg]* [, N=<numeric value>])
Paramètres
Paramètre |
Valeur |
Description |
---|---|---|
N |
<valeur_numérique> |
Spécifie la quantité maximale de mots autorisée à figurer entre les termes (proximité explicite). Si ONEAR inclut plus de deux opérandes, la quantité maximale de mots autorisée entre les termes (N) est comptée à l’intérieur de l’expression entière. Par défaut : 4 |
Exemples
Exemple 1. L’expression suivante établit une correspondance avec toutes les occurrences des mots « cat », « dog », « fox » et « wolf » qui apparaissent dans l’ordre, si ces termes ne sont pas séparés de plus de quatre jetons indexés.
onear(cat, dog, fox, wolf)
Le tableau suivant contient des exemples de valeurs de chaîne de propriété gérée et indique si elles correspondent à l’expression précédente.
Correspondance ? |
Texte |
---|---|
Oui |
The picture shows a cat, a dog, a fox, and a wolf. |
Non |
Dogs, foxes, and wolves are canines, but cats are felines. |
Non |
The picture shows a cat with a dog, a fox, and a wolf. |
Exemple 2. L’expression suivante établit une correspondance (avec recherche de radical) avec le texte figurant sur la deuxième ligne du tableau précédent.
onear(dog, fox, wolf, cat, N=5)
**Exemple 3.**L’expression suivante établit une correspondance avec le texte des première et troisième ligne du tableau précédent.
onear(cat, dog, fox, wolf, N=5)
Remarques
Voir aussi NEAR.
OR
Renvoie uniquement les éléments qui satisfont à au moins un des opérandes OR. Les éléments qui correspondent obtiennent un classement dynamique plus élevé (score de pertinence dans le jeu de résultats) si davantage d’opérandes OR sont satisfaits. Les opérandes peuvent être un terme unique ou toute sous-expression FQL valide.
Syntaxe
or(operand, operand [,operand]*)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec tous les éléments pour lesquels l’index de texte intégral par défaut contient « cat » ou « dog ». Si l’index de texte intégral par défaut d’un élément contient à la fois « cat » et « dog », il correspond et a un classement dynamique plus élevé que s’il contenait un seul des jetons.
or(cat, dog)
PHRASE
Recherche une chaîne de jetons exacte.
Les opérandes PHRASE peuvent être des termes uniques. Les caractères génériques sont acceptés.
Syntaxe
phrase(term [, term]*)
Paramètres
Non applicable.
Remarques
Voir aussi STRING.
RANGE
Utilisez l’opérateur RANGE pour les propriétés gérées numériques et de date/heure. L’opérateur autorise les expressions de correspondance de plage.
Syntaxe
range(start, end [,from="GE"|"GT"] [,to="LE"|"LT"])
Paramètres
Paramètre |
Valeur |
Description |
---|---|---|
start |
<valeur_numérique>|<valeur_date/heure> |
Valeur de départ de la plage. Pour indiquer que la plage n’a pas de limite inférieure, utilisez le mot réservé min. |
stop |
<valeur_numérique>|<valeur_date/heure> |
Valeur de fin de la plage. Pour indiquer que la plage n’a pas de limite supérieure, utilisez le mot réservé max. |
from |
GE|GT |
Paramètre facultatif qui indique l’intervalle de début ouvert ou fermé. Valeurs valides :
Par défaut : GE |
to |
LE|LT |
Paramètre facultatif qui indique l’intervalle de fin ouvert ou fermé. Valeurs valides :
Par défaut : LT |
Exemples
Exemple 1. L’expression suivante établit une correspondance avec une propriété de description commençant par l’expression « olympic games » et apparaissant dans des éléments dont la taille est au moins égale à 10 000 octets.
and(size:range(10000, max), description:starts-with("olympic games"))
RANK
Amplifie le classement dynamique des éléments en fonction de certaines occurrences de termes sans modifier les éléments correspondant à la requête. Une expression RANK contient un composant qui doit correspondre et un ou plusieurs composants qui contribuent uniquement au classement dynamique.
Les différences entre l’opérateur RANK et l’opérateur XRANK sont les suivantes :
XRANK est beaucoup plus efficace que RANK lorsque les termes dans les opérandes RANK génèrent de nombreuses correspondances.
Pour XRANK, le niveau d’amplification peut être défini par le biais du paramètre d’amplification, au moment de l’interrogation.
XRANK ajoute une valeur de classement constante, tandis que RANK ajoute une valeur de classement associée aux opérandes.
XRANK ajoute un classement aux éléments qui n’ont reçu aucun classement dynamique.
Les opérandes XRANK peuvent également concerner des propriétés gérées (et pas seulement des index de texte intégral).
L’opérateur RANK prend deux opérandes ou plus. Le premier opérande est l’expression de requête principale mise en correspondance. Il contribue au rappel ou à la précision comme tout autre terme ou expression. Les opérandes suivants contribuent à amplifier le classement dynamique mais n’ont aucune incidence sur le choix des éléments qui correspondent à la requête. Les opérandes peuvent être des termes uniques ou toute sous-expression FQL valide.
L’opérateur RANK peut être utilisé uniquement sur des index de texte intégral.
Syntaxe
rank(operand, rank-operand [, rank-operand]*)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index contient « dog ». L’expression augmente le classement dynamique d’un élément si son index contient également « cat ». Si l’index contient « cat » mais pas « dog », l’élément ne correspond pas à l’expression.
rank(dog, cat)
Exemple 2. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index contient « dog ». L’expression augmente le classement dynamique d’un élément si l’index contient également « boxer » ou « pointer ».
rank(dog, boxer, pointer)
Exemple 3. L’expression suivante met en correspondance les mêmes éléments que la précédente, mais augmente le classement dynamique d’un élément si l’index contient également l'expression « thoroughbred beagle ».
rank(dog, "thoroughbred beagle")
Exemple 4. L’expression suivante met en correspondance les éléments dont la propriété gérée title contient à la fois « dog » et « beagle ». L’expression augmente le classement dynamique des éléments dont la propriété gérée title contient également le jeton indexé « thoroughbred ».
and(title:dog, rank(title:beagle, title:thoroughbred))
STARTS-WITH
Spécifie un mot ou une expression qui doit apparaitre au début d’une propriété gérée.
Syntaxe
starts-with(<term or phrase>)
Paramètres
Non applicable.
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments possédant les valeurs « Adam Jones sr » et « Adam Jones » dans la propriété gérée author. Elle n’établit aucune correspondance avec les éléments ayant la valeur « Mr Adam Jones ».
author:starts-with("adam jones")
Remarques
Pour plus de remarques sur la correspondance de limite, voir ENDS-WITH.
STRING
Définit une condition de mise en correspondance booléenne à une chaîne de texte.
L’opérande est une chaîne de texte (un ou plusieurs textes) à mettre en correspondance. La chaîne est suivie de zéro ou plusieurs paramètres.
L’opérateur STRING peut également être utilisé comme conversion de type. La requête string("24.5"), par exemple, traite la valeur numérique « 24.5 » comme une chaîne de texte.
Syntaxe
string("<text string>"
[, mode=<mode>]
[, n=<near>]
[, weight=<n>]
[, linguistics=<on|off>]
[, wildcard=<on|off>]
[, minexpansion=<n>]
[, maxexpansion=<n>]
[, annotation_class=<annotation_string>])
Paramètres
Paramètre |
Valeur |
Description |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
mode |
<mode> |
Le paramètre mode indique comment évaluer la valeur <text string>. Le tableau suivant montre les valeurs possibles.
Default: "PHRASE" |
||||||||||||||||||
n |
<valeur_numérique> |
Ce paramètre indique la distance de terme maximale pour mode="NEAR" ou mode="ONEAR". Les expressions suivantes sont équivalentes. string("hello world", mode="NEAR", n=5) near(hello, world, n=5) Par défaut : 4 |
||||||||||||||||||
weight |
<valeur_numérique> |
Ce paramètre est une valeur numérique positive indiquant le poids de terme pour le classement dynamique. Une valeur inférieure indique qu’un terme doit moins contribuer au classement. Une valeur supérieure indique qu’un terme doit plus contribuer au classement. Une valeur de paramètre de poids nulle indique qu’un terme ne doit pas affecter le classement dynamique. Le paramètre weight s’applique à tous les termes dans l’expression STRING.
Par défaut : 100 |
||||||||||||||||||
linguistics |
on|off |
Désactive/active toutes les fonctionnalités linguistiques pour la chaîne (lemmatisation, synonymes, vérification de l’orthographe) si elles sont activées pour la requête. Vous pouvez utiliser ce paramètre pour désactiver le traitement linguistique pour un terme ou une chaîne donné(e) lorsque vous souhaitez que ce terme ou cette chaîne contribue tout de même au classement. Par défaut : "ON" |
||||||||||||||||||
wildcard |
on|off |
Ce paramètre contrôle l’extension de caractère générique des termes à l’intérieur de <text string>. Il remplace tout paramètre générique dans les paramètres de requête et autorise l’activation ou la désactivation des caractères génériques étendus sur des parties spécifiques de la requête. Les valeurs valides sont les suivantes :
Par défaut : « ON » |
||||||||||||||||||
minexpansion |
<entier_positif> |
Ce paramètre définit la longueur minimale d’une sous-chaîne dans l’extension de caractère générique. La valeur <string> doit être une expression générique avec un seul astérisque. Par défaut : 0 |
||||||||||||||||||
maxexpansion |
<entier_positif> |
Ce paramètre définit la longueur maximale d’une sous-chaîne dans l’extension de caractère générique. La valeur <string> doit être une expression générique avec un seul astérisque. Par défaut : infinie |
||||||||||||||||||
annotation_class |
<annotation_string> |
Le paramètre STRINGannotation_class="user" sert à annoter un nœud STRING pour indiquer qu’il s’agit d’un nœud généré par l’utilisateur. Certaines fonctionnalités de pertinence sont appliquées uniquement à la partie de la requête générée par l’utilisateur. Cela comprend l’amplification de requête basée sur le texte d’ancrage et les journaux de requête de clics. |
Exemples
Exemple 1. Le mode de chaîne par défaut étant « PHRASE », chacune des expressions suivantes renvoie le même résultat.
"what light through yonder window breaks"
string("what light through yonder window breaks")
string("what light through yonder window breaks", mode="phrase")
phrase(what, light, through, yonder, window, breaks)
Exemple 2. L’expression de jeton de chaîne suivante et l’expression d’opérateur AND renvoient les mêmes résultats.
string("cat dog fox", mode="and")
and(cat, dog, fox)
Exemple 3. L’expression de jeton de chaîne suivante et l’expression d’opérateur OR renvoient les mêmes résultats.
string("coyote saguaro", mode="or")
or(coyote, saguaro)
Exemple 4. L’expression de jeton de chaîne suivante et l’expression d’opérateur ANY renvoient les mêmes résultats.
string("coyote saguaro", mode="any")
any(coyote, saguaro)
Exemple 5. L’expression de jeton de chaîne suivante et l’expression d’opérateur NEAR renvoient les mêmes résultats.
string("coyote saguaro", mode="near")
near(coyote, saguaro)
Exemple 6. L’expression de jeton de chaîne suivante et l’expression d’opérateur NEAR renvoient les mêmes résultats.
string("cat dog fox wolf", mode="near", N=4)
near(cat, dog, fox, wolf, N=4)
Exemple 7. L’expression de jeton de chaîne suivante et l’expression d’opérateur ONEAR renvoient les mêmes résultats.
string("cat dog fox wolf", mode="onear")
onear(cat, dog, fox, wolf)
Exemple 8. Les caractères de guillemets ("?") et d’astérisque ("*") étant évalués comme des caractères génériques, les expressions de jetons de chaînes suivantes établissent une correspondance avec « cat », « cot » et tout autre jeton indexé à trois lettres commençant par « c » et se terminant par « t ».
string("c?t")
string("c*t")
Exemple 9. L’expression de jeton de chaîne suivante établit une correspondance avec le mot « nobler » avec les fonctionnalités linguistiques désactivées ; les autres formes du mot (telles que « ennobling ») ne sont par conséquent pas mises en correspondance avec la recherche de radical.
string("nobler", linguistics="off")
Exemple 10. L’expression suivante établit une correspondance avec des éléments qui contiennent « cat » ou « dog », mais elle augmente davantage le classement dynamique des éléments qui contiennent « dog » que le classement des éléments qui contiennent « cat ».
or(string("cat", weight="200"), string("dog", weight="500"))
Exemple 11. L’expression suivante établit une correspondance avec tous les termes commençant par « prefix » et se terminant par « suffix », où la sous-chaîne entre « prefix » et « suffix » a une longueur maximale de quatre caractères.
string("prefix*suffix",maxexpansion=4)
Exemple 12. L’expression de jeton de chaîne suivante établit une correspondance avec les mots « microsoft corporation » . L’ajout du paramètre annotation_class permet de s’assurer que les éléments avec exactement le même texte d’ancrage dans un lien pointant vers l’élément bénéficieront d’une amplification supplémentaire du classement.
string("Microsoft corporation", annotation_class="user")
Remarques
Poids de pertinence pour le classement dynamique
La principale incidence du paramètre weight concerne les requêtes OR. Il peut également avoir un impact sur les requêtes AND. L’algorithme de classement dynamique peut signifier que différents termes apportent différentes contributions au classement en fonction de l’emplacement où la correspondance de terme a été établie dans l’élément.
La différence de contribution au classement peut également être basée sur la fréquence de terme et la fréquence d’élément inverse. Voici un exemple :
Requête : and(string("a"), string("b", weight=200))
Schéma d’index : la propriété gérée title a davantage de poids que la propriété gérée body.
L’élément d’index 1 contient le terme ’a’ dans le titre et le terme ’b’ dans le corps.
L’élément d’index 2 contient le terme ’a’ dans le corps et le terme ’b’ dans le titre.
Dans cet exemple, l’élément 2 obtiendra le classement total le plus élevé car les éléments ayant une contribution au classement dynamique plus élevée bénéficient d’une amplification supérieure.
Conseil |
---|
L’amplification de terme relative (positive ou négative) est appliquée au composant de classement dynamique du classement total. Toutefois, les calculs de classement d’amplification de proximité (distance entre les mots) ne sont pas affectés par le poids des termes. Le poids relatif ne signifie pas toujours que le classement total de l’élément est modifié en fonction du pourcentage donné. La requête suivante recherche les termes « peter », « paul », ou « mary », où « peter » aura une contribution au classement deux fois supérieure à celle des deux autres termes. or(peter, string("paul mary", mode="OR", weight=50)) |
Gestion des chaînes avec caractères spéciaux
Les caractères spéciaux tels que virgule (« , »), point virgule (« ; »), signe deux-points (« : »), point (« . »), signe moins (« - »), souligné (« _ ») ou barre oblique (« /" ») sont traités comme des espaces à l’intérieur d’une expression de chaîne placée entre guillemets double. Ceci est lié au processus de segmentation du texte en unités lexicales. Ces caractères impliquent également une formulation implicite des jetons séparés par ces caractères.
Les expressions de requête suivantes sont équivalentes.
title:string("animals birds", mode="phrase")
title:"animals/birds"
title:string("animals/birds", mode="and")
title:string("animals/birds", mode="or")
Les expressions de requête suivantes sont équivalentes.
title:or(string("animals birds", mode="phrase"),
string("animals insects", mode="phrase"))
title:string("animals/birds animals/insects", mode="or")
Les expressions de requête suivantes sont équivalentes.
body:string("help contoso com", mode="phrase")
body:string("help@contoso.com")
Mise en correspondance d'expression sous forme de jeton
Vous pouvez rechercher une chaîne exacte de jetons à l’aide de l’opérateur STRING avec mode="phrase" ou à l’aide de l’opérateur PHRASE.
Toutes ces opérations d'expression impliquent une correspondance d'expression sous forme de jeton. Cela signifie que les caractères spéciaux tels que la virgule (« , »), le point-virgule (« ; »), le signe deux points (« : »), le soulignement (« _ »), le signe moins (« - ») et la barre oblique (« / ») sont traités comme des espaces. Ceci est lié au processus de segmentation du texte en unités lexicales.
XRANK
Amplifie le classement dynamique des éléments en fonction de certaines occurrences de termes sans modifier les éléments correspondant à la requête. Une expression XRANK contient un composant qui doit correspondre et un ou plusieurs composants qui contribuent uniquement au classement dynamique.
Les différences entre l’opérateur RANK et l’opérateur XRANK sont les suivantes :
XRANK est beaucoup plus efficace que RANK lorsque les termes dans les opérandes RANK génèrent de nombreuses correspondances.
Pour XRANK, le niveau d’’amplification peut être défini par le biais du paramètre d’amplification, au moment de l’interrogation.
XRANK ajoute une valeur de classement constante, tandis que RANK ajoute une valeur de classement associée aux opérandes.
XRANK ajoute un classement aux éléments qui n’ont reçu aucun classement dynamique.
Les opérandes XRANK peuvent également concerner des propriétés gérées (et pas seulement des index de texte intégral).
L’opérateur XRANK prend deux opérandes ou plus. Les opérandes peuvent être des termes uniques ou toute sous-expression FQL valide.
Le premier opérande est l’expression de requête principale mise en correspondance. Il contribue au rappel ou à la précision comme tout autre terme ou expression.
Les opérandes suivants n’affectent pas le nombre total d’éléments qui correspondent, mais affectent le classement dynamique dans le sens où les éléments correspondant à des termes dans les opérandes suivants bénéficieront d’un classement accru au sein du jeu de résultats. Si vous avez plusieurs opérandes suivants, la correspondance de chaque opérande ajoutera une valeur d’amplification de n au classement total de l’élément.
Cet opérateur peut être utilisé pour amplifier le classement dynamique en fonction de certains termes de texte trouvés, mais dans le cas où il n’est pas obligatoire que ces termes soient trouvés pour qu’une correspondance soit établie.
L’opérateur XRANK peut être utilisé sur des index de texte intégral et des propriétés gérées.
XRANK prend en charge l’amplification unaire. xrank(a,boost=n) ajoute une valeur d’amplification de n à chaque élément qui correspond à a. Vous pouvez utiliser cette syntaxe lorsque vous combinez plusieurs expressions XRANK à l’aide d’un opérateur AND ou ANY.
Syntaxe
xrank(operand, rank-operand [, rank-operand]* [,boost=n] [,boostall=yes])
Paramètres
Paramètre |
Valeur |
Description |
---|---|---|
boost |
<valeur_numérique> |
Indique que le classement dynamique des éléments correspondants augmentera du nombre spécifié. Le composant de classement dynamique ne sera pas inférieur à zéro (les classements résultants négatifs ne sont pas pris en charge). Il se peut tout de même que vous obteniez un classement résultant positif à cause du composant de classement statique. Par défaut : 100 |
boostall |
yes|no |
Indique si l’augmentation du classement dynamique sera appliquée aux éléments qui n’ont pas encore de classement dynamique.
Par défaut : no |
Exemples
Exemple 1. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index de texte intégral par défaut contient « cat » ou « dog ». L’expression augmente le classement dynamique des éléments qui contiennent également « thoroughbred ».
xrank(or(cat, dog), thoroughbred)
Exemple 2. L’expression suivante établit une correspondance avec les éléments pour lesquels l’index de texte intégral par défaut contient « cat » ou « dog ». L’expression augmente de 500 le classement dynamique des éléments qui contiennent « thoroughbred », au lieu de la valeur par défaut (100), même pour les éléments qui n’avaient auparavant aucun classement.
xrank(or(cat, dog), thoroughbred, boost=500, boostall=yes)
Voir aussi
Concepts
Aperçu de l’intégration des requêtes FAST Search
Référence de la syntaxe du langage de requête FQL (FAST Query Language)