Partager via


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.

STRING

Booléen

Vous permet de combiner des termes et des sous-expressions dans une requête.

AND, OR, ANY, ANDNOT, NOT, COUNT

Proximité

Vous permet de spécifier la proximité des termes de requêtes dans une séquence de texte correspondante.

NEAR, ONEAR, PHRASE, STARTS-WITH, ENDS-WITH, EQUALS

Numérique

Vous permet de spécifier des conditions numériques dans la requête.

RANGE, INT, FLOAT, DATETIME,

Pertinence

Vous permet d’affecter l’évaluation de pertinence d’une requête.

RANK, XRANK, FILTER

Le tableau suivant répertorie les opérateurs pris en charge.

Opérateur

Description

Type

AND

Renvoie uniquement les éléments qui satisfont à tous les opérandes AND.

Booléen

ANDNOT

Renvoie uniquement les éléments qui satisfont au premier opérande et qui ne satisfont pas aux opérandes suivants.

Booléen

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.

Booléen

COUNT

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

DATETIME

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

ENDS-WITH

Spécifie qu’un mot ou une expression doit apparaitre à la fin d’une propriété gérée.

Proximité

EQUALS

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é

FILTER

Utilisé pour interroger des métadonnées ou autres données structurées.

Pertinence

FLOAT

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

INT

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

NEAR

Limite le jeu de résultats aux éléments qui ont N termes à une certaine distance les uns des autres.

Proximité

NOT

Renvoie uniquement les éléments qui ne satisfont pas à l’opérande. Celui-ci peut être toute expression FQL valide.

Booléen

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.

Proximité

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.

Booléen

PHRASE

Renvoie uniquement les éléments qui correspondent à une chaîne de jetons exacte.

Proximité

RANGE

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

RANK

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

STARTS-WITH

Spécifie qu’un mot ou une expression doit apparaitre au début d’une propriété gérée.

Proximité

STRING

Définit une condition de mise en correspondance booléenne à une chaîne de texte.

Chaîne

XRANK

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.

ConseilConseil

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 :

  • GE  Supérieur ou égal à la valeur de début (>= début de l’intervalle).

  • GT  Supérieur à la valeur de début (> début de l’intervalle).

Par défaut : GE

to

LE|LT

Paramètre facultatif qui indique l’intervalle de fin ouvert ou fermé.

Valeurs valides :

  • LE  Inférieur ou égal à la valeur de fin (<= fin de l’intervalle).

  • LT  Inférieur à la valeur de fin (< fin de l’intervalle).

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.

Mode

Expression d’opérateur équivalente

"PHRASE"

phrase(term [,term]*)

"AND"

and(term, term [,term]*)

"OR"

or(term, term [,term]*)

"ANY"

any(term, term [,term]*)

"NEAR"

near(term, term [,term]*, N)

"ONEAR"

onear(term, term [,term]*, N)

"SIMPLEALL"

La chaîne est mise en forme conformément à la syntaxe "ALL" de langage de requête simple. Pour plus de détails, voir Langage de requête simple FQL.

"SIMPLEANY"

La chaîne est mise en forme conformément à la syntaxe "ANY" de langage de requête simple. Pour plus de détails, voir Langage de requête simple FQL.

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.

ConseilConseil

Le paramètre de poids affecte uniquement les requêtes d’index de texte intégral.

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 :

  • "ON"  Indique que les caractères « ? » et « * » sont évalués comme caractères génériques. Un caractère « ? » correspond à n’importe quel caractère et un caractère « * » correspond à zéro caractère ou plus.

  • "OFF"  Indique que les caractères « ? » et « * » ne sont pas évalués comme caractères génériques.

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.

ConseilConseil

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.

  • yes  Indique que l’augmentation du classement dynamique sera appliquée à tous les éléments correspondants, même s’ils n’ont pas encore de valeurs de classement dynamique.

  • No  Indique que l’augmentation du classement dynamique sera appliquée uniquement aux éléments correspondants qui ont déjà des valeurs 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)

Spécification de propriété FQL

Expressions de jetons FQL

Langage de requête simple FQL

Référence de la syntaxe FQL (ABNF)