Utilisation d’affinements dans le service Web de requête
Apprenez à utiliser l’affinement de requêtes FAST Search Server 2010 for SharePoint dans le service Web de requêtes.
Dernière modification : mercredi 5 octobre 2011
Cet article explique comment vous pouvez utiliser l’affinement de requêtes FAST Search Server 2010 for SharePoint dans le service Web de requêtes, comme suit :
Dans cet article
Spécification des affinements dans le XML de requête
Données d’affinement dans le résultat de requête
Création d’une requête affinée
Exemple Visual Studio d’affinement de requête
S’applique à : SharePoint Server 2010
Spécification des affinements dans le XML de requête
Le service Web de requête utilise Élément d’affinement dans le schéma Microsoft.Search.Query pour définir les affineurs à retourner dans le résultat de requête.
Cet élément contient le nom de l’affinement, mais vous pouvez aussi utiliser une syntaxe avancée pour appliquer des valeurs de configuration autres que celles par défaut à l’affinement nommé. Pour plus d’informations sur la syntaxe avancée de l’élément Refiner, voir Spécification d’affinement dans le service Web de requête et le modèle objet de requête.
L’exemple suivant montre le code XML de requête qui demande trois affinements.
<IncludeRefinementResults>
<Refiners>
<Refiner>author</Refiner>
<Refiner>write(discretize=manual/2010-01-01/2010-08-22/2010-09-15/2010-09-21/2010-09-22)</Refiner>
<Refiner>companies</Refiner>
</Refiners>
</IncludeRefinementResults>
L’affinementwrite représente la dernière date de modification de l’élément et utilise la syntaxe avancée pour retourner les bacs de date/heure de taille fixe.
Données d’affinement dans le résultat de requête
Si vous avez activé l’affinement de requête pour une propriété géré de votre requête, le résultat de requête contient les données du bac d’affinement. Un bac d’affinement représente une valeur ou une plage de valeurs spécifique pour la propriété gérée. Dans une interface utilisateur de recherche, vous présentez généralement les bacs d’affinement comme choix Affiner votre requête.
Lors de l’utilisation de la méthode du service Web de requête QueryEx, le dataset renvoyé contient une table nommée RefinementResults. Cette table contient une ligne par bac d’affinement et contient les colonnes telles que spécifiées au Tableau 1.
Tableau 1. Données retournées pour les bacs d’affinement
Paramètre |
Description |
---|---|
RefinerName |
Nom de l’affinement de requête. Il s’agit d’une représentation en minuscule du nom de la propriété gérée. |
RefinementName |
Représentation de l’affinement sous forme de chaîne affichable pour ce bac d’affinement. Cette chaîne est généralement utilisée pour présenter les options d’affinement aux utilisateurs sur une page de résultats de requête. |
RefinementValue |
Représentation de l’affinement sous forme de chaîne dont la mise en forme est spécifique à l’implémentation. Cette valeur est renvoyée pour le débogage et n’est généralement pas nécessaire pour le client. |
RefinementToken |
Chaîne codée sur 64 bits qui représente ce bac d’affinement lorsque vous effectuez une requête affinée. Il s’agit de la valeur passée à la batterie FAST Search Server 2010 for SharePoint lors de l’exécution d’une requête affinée. |
RefinementCount |
Nombre de résultats pour ce bac d’affinement. Ceci représente le nombre d’éléments dans le résultat de requête dont la valeur de la propriété gérée donnée correspond à ce bac d’affinement. |
Création d’une requête affinée
Une requête affinée est une requête créée sur la base d’une option d’affinement sélectionnée par l’utilisateur, par exemple pour limiter la requête à une plage de dates spécifique.
En règle générale, un résultat de requête présente les options d’affinement sous la forme de valeurs de type chaîne ou de plages de valeurs. Chaque valeur de chaîne ou plage de valeurs numériques porte le nom de bac d’affinement. À chaque bac d’affinement est associée une valeur RefinementToken. On utilise cette valeur dans la requête affinée.
L’exemple suivant montre le XML de requête représentant un affinement.
<RefinementFilters>
<RefinementFilter>AQVmaXhlZA90ZWxzdHJha2V5d29yZHMBAV4BJA==</RefinementFilter>
</RefinementFilters>
L’élément RefinementFilter représente un bac d’affinement. La requête résultante se limite aux éléments où la propriété gérée associée possède une valeur dans le bac d’affinement.
Vous pouvez ajouter plusieurs bacs d’affinement dans l’élément RefinementFilters. Dans ce cas, la requête résultante sera limitée aux éléments où la propriété gérée associée possède une valeur au sein de tous les bacs d’affinement. Cela permet d’appliquer un affinement sur les propriétés à valeurs multiples. Par exemple, affinez la requête aux éléments ayant deux auteurs (chacun représenté par un bac d’affinement), mais excluez les éléments qui n’ont qu’un seul de ces deux auteurs.
L’exemple suivant montre le code XML de requête représentant un affinement qui contient deux bacs d’affinement.
<RefinementFilters>
<RefinementFilter>AQVmaXhlZA90ZWxzdHJha2V5d29yZHMBAV4BJA==</RefinementFilter>
<RefinementFilter>AQZidW5kbGUPdGVsc3RyYWtleXdvcmRzAQFeASQ=</RefinementFilter>
</RefinementFilters>
Exemple Visual Studio d’affinement de requête
Les étapes suivantes sont une extension de Procédure pas à pas : Interrogation de FAST Search Server à partir d’une application cliente. Suivez les étapes décrites dans cet article et étendez le code comme décrit ci-dessous.
Les extensions de code sont les suivantes :
demander trois affinements dans le résultat de requête (auteur, écriture et société). Ceci est identique à l’exemple dans Spécification des affinements dans le XML de requête ;
imprimer les données d’affinement de requête dans le second contrôle DataGridView.
Pour étendre le code pour l’application cliente Visuel Studio
Remplacez la définition de la chaîne queryXML2, de manière à ajouter trois affinements de requête dans le jeu de résultats :
// queryXML2 is the part of the XML after the query string. string queryXML2 = @" </QueryText> </Context> <ResultProvider>FASTSearch</ResultProvider> <Range> <Count>10</Count> </Range> <IncludeRefinementResults> <Refiners> <Refiner>author</Refiner> <Refiner>write(discretize=manual/2010-01-01/2010-08-22/2010-09-15/2010-09-21/2010-09-22)</Refiner> <Refiner>companies</Refiner> </Refiners> </IncludeRefinementResults> </Query> </QueryPacket>";
Ajoutez la ligne de code suivante à l’événement queryButton_Click :
// Set the second DataGridView data source to the RefinementResults table in the DataSet object: secondGrid.DataSource = queryResults.Tables["RefinementResults"];
Voir aussi
Référence
Élément d’affinement dans le schéma Microsoft.Search.Query
Concepts
Schéma d’index (FAST Search Server for SharePoint)
Procédure pas à pas : Interrogation de FAST Search Server à partir d’une application cliente