Partager via


Procédure : récupérer les propriétés analysées pour une catégorie dans le schéma de recherche

Vous pouvez utiliser le modèle objet Administration d'Recherche de contenu d'entreprise pour accéder aux catégories de propriétés analysées des métadonnées de recherche d'un fournisseur de services partagés en utilisant l'objet Schema. Vous pouvez ensuite récupérer la liste des propriétés analysées associées à chaque catégorie en utilisant la méthode GetAllCrawledProperties de l'objet Category.

La procédure suivante montre comment écrire la liste complète des propriétés analysées, les GUID des jeux de propriétés et les types de données Variant à partir d'une application de console.

Pour configurer votre application afin d'utiliser le modèle objet Administration de recherche de contenu d'entreprise

  1. Dans votre application, définissez des références aux DLL suivantes :

    • Microsoft.SharePoint.dll

    • Microsoft.Office.Server.dll

    • Microsoft.Office.Server.Search.dll

  2. Dans le fichier de classe de votre application de console, ajoutez les instructions using suivantes en début de code avec les autres directives d'espaces de noms.

    using Microsoft.SharePoint;
    using Microsoft.Office.Server.Search.Administration;
    

Pour vérifier qu'une valeur a été spécifiée pour un nom de catégorie par l'utilisateur, et dans le cas contraire, fournir de l'aide à l'utilisateur

  1. Créez une fonction pour afficher des informations d'utilisation dans la fenêtre de la console.

    static void Usage()
    {
       Console.WriteLine("Retrieve Crawled Properties by Category Sample");
       Console.WriteLine("Usage: GetCrawledPropertiesSample.exe CategoryName");
    }
    
  2. Dans la fonction Main() de l'application de console, ajoutez le code pour vérifier si le nombre d'éléments dans le paramètre args[] est égal à 1 ; si ce n'est pas le cas, (ce qui signifie qu'aucune valeur n'a été spécifiée pour identifier la catégorie), appelez la fonction Usage() définie à l'étape précédente.

    if (args.Length != 1)
    {
    Usage();
    return;
    }
    

Pour récupérer les catégories pour le schéma de recherche du fournisseur de services partagés et afficher la liste des propriétés analysées pour cette catégorie

  1. Créez une variable de chaîne locale pour le nom de la catégorie et affectez-lui la valeur spécifiée dans le paramètre args[], à l'aide du code suivant :

    string strCategoryName = args[0];
    
  2. Récupérez l'objet Schema pour le contexte de recherche du fournisseur de services partagés, en utilisant le code ci-après. Pour plus d'informations sur les différentes façons de récupérer le contexte de recherche, voir Procédure : renvoyer le contexte de recherche pour le fournisseur du service de recherche.

    /*
    Replace <SiteName> with the name of a site using the SSP
    */
    string strURL = "http://<SiteName>";
    Schema sspSchema = new Schema(SearchContext.GetContext(new SPSite(strURL)));
    
  3. Récupérez la collection de catégories pour le schéma de recherche en utilisant le code suivant :

    CategoryCollection categories = sspSchema.AllCategories;
    
  4. Déterminez si la collection de catégories contient la catégorie spécifiée ; si ce n'est pas le cas, affichez la liste des catégories de la collection en utilisant le code suivant :

    if (categories.Contains(strCategoryName) != true)
    {
        Console.WriteLine(strCategoryName + " does not exist in Schema.");
        Console.WriteLine("Valid Schema Categories are:");
        foreach (Category category in categories)
        {
            Console.WriteLine(category.Name);
        }
        return;
    }
    
  5. Si la catégorie existe, récupérez la liste des propriétés analysées pour celle-ci, puis affichez dans la console le nom, le GUID du jeu de propriétés et le type VARIANT pour chaque propriété analysée de la liste en utilisant le code suivant :

    foreach (Category category in categories)
    {
        if (category.Name == strCategoryName)
        {
            foreach (CrawledProperty property in category.GetAllCrawledProperties())
            {
                Console.WriteLine("");
                Console.Write("NAME: " + property.Name);
                Console.Write("   PROPSET: " + property.Propset.ToString());
                Console.Write("   VARIANTTYPE: " + property.VariantType.ToString());
            }
        }
    }
    

Exemple

Vous trouverez ci-après le code complet pour l'échantillon de classe d'application de console.

Conditions préalables requises

  • Assurez-vous qu'un fournisseur de services partagés est déjà créé.

Références de projet

Ajoutez les références de projet suivantes dans votre projet de code d'application de console avant d'exécuter cet exemple :

  • Microsoft.SharePoint

  • Microsoft.Office.Server

  • Microsoft.Office.Server.Search

using System;
using System.Collections;
using System.Text;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;
namespace GetCrawledPropertiesSample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                if (args.Length != 1)
                {
                    Usage();
                    return;
                }

                string strCategoryName = args[0];
                /*
                Replace <SiteName> with the name of a site using the SSP
                */
                string strURL = "http://<SiteName>";
                Schema sspSchema = new Schema(SearchContext.GetContext(new SPSite(strURL)));
                CategoryCollection categories = sspSchema.AllCategories;

                if (categories.Contains(strCategoryName) != true)
                {
                    Console.WriteLine(strCategoryName + " does not exist in Schema.");
                    Console.WriteLine("Valid Schema Categories are:");
                    foreach (Category category in categories)
                    {
                        Console.WriteLine(category.Name);
                    }
                    return;
                }

                foreach (Category category in categories)
                {
                    if (category.Name == strCategoryName)
                    {
                        foreach (CrawledProperty property in category.GetAllCrawledProperties())
                        {
                            Console.WriteLine("");
                            Console.Write("NAME: " + property.Name);
                            Console.Write("   PROPSET: " + property.Propset.ToString());
                            Console.Write("   VARIANTTYPE: " + property.VariantType.ToString());
                        }
                    }
                }
            }
            catch (Exception ex1)
            {
                Console.WriteLine(ex1.ToString());
                Usage();
            }
        }
 
        static void Usage()
        {
            Console.WriteLine("Retrieve Crawled Properties by Category Sample");
            Console.WriteLine("Usage: GetCrawledPropertiesSample.exe CategoryName");
        }
    }
}