Partager via


Procédure : mapper une propriété analysée à une propriété gérée

L'objet Schema du modèle objet Administration de la Recherche de contenu d'entreprise fournit l'accès aux propriétés gérées configurées pour le service de recherche d'un fournisseur de services partagés. Pour plus d'informations sur l'objet Schema, voir Gestion des métadonnées.

La procédure suivante montre comment mapper une propriété analysée à une propriété gérée.

Pour configurer votre application pour qu'elle utilise le modèle objet Administration de la recherche de contenu d'entreprise

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

    • Microsoft.SharePoint.dll

    • Microsoft.Office.Server.dll

    • Microsoft.Office.Server.Search.dll

  2. Dans le fichier de classe de votre application console, ajoutez les instructions using suivantes dans la partie haute du code, avec les autres directives d'espaces de noms.

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

Pour vérifier que les valeurs requises pour le mappage de propriété ont été passées dans le paramètre args[] et, dans le cas contraire, afficher les informations d'utilisation.

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

    static void Usage()
    {
        Console.WriteLine("Map Crawled Property to Managed Property Sample");
        Console.WriteLine("Usage: PropertyMappingSample.exe <cPropGUID> <cPropName> <cPropVType> <mPropPID>");
        Console.WriteLine("<cPropGUID> - The GUID identifying the crawled property.");
        Console.WriteLine("<cPropName> - The crawled property name.");
        Console.WriteLine("<cPropVType> - The variant type of the crawled proeprty.");
        Console.WriteLine("<mPropName> - The name of the managed property.");
    }
    
  2. Dans la fonction Main() de l'application console, ajoutez du code pour vérifier si le nombre d'éléments dans le paramètre args[] est égal à 4 ; si ce n'est pas le cas (ce qui signifie que toutes les valeurs nécessaires à la création du mappage de propriété n'ont pas été passées dans le paramètre args[]), appelez la fonction Usage() définie dans l'étape précédente.

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

Pour créer le mappage de propriété

  1. Créez des variables locales pour contenir les valeurs pour le mappage de propriété passées dans le paramètre args[] à l'aide du code suivant.

    Guid cPropGUID = new Guid(args[0]);
    string cPropName = args[1];
    int vType = Convert.ToInt32(args[2]);
    string mPropName = args[3];
    
  2. Récupérez l'objet Schema pour le contexte de la recherche du fournisseur de services partagés à l'aide du code suivant. 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
    */
    SearchContext context;
    string strURL = "http://<SiteName>";
    using(SPSite site = new SPSite(strURL))
    {
    context = SearchContext.GetContext(site);
    }
    Schema sspSchema = new Schema(context);
    
  3. Récupérez la collection de propriétés gérées à l'aide du code suivant :

    ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
    
  4. Récupérez la propriété gérée avec le nom spécifié dans le paramètre args[3].

    ManagedProperty mProp = properties[mPropName];
    
  5. Créez une instance de la classe Mapping à l'aide des valeurs de l'étape précédente.

    Mapping newMapping = new Mapping(cPropGUID, cPropName, vType, mProp.PID);
    
  6. Récupérez la collection de mappages de cette propriété gérée, vérifiez si le mappage créé à l'étape 5 correspond à un mappage existant dans la collection et, si tel est le cas, affichez ces informations dans la console à l'aide du code suivant.

    MappingCollection mappings = mProp.GetMappings();
    if(mappings.Contains(newMapping))
    {
        Console.WriteLine("Mapping failed: requested mapping already exists.");
        return;
    }
    
  7. Si le nouveau mappage ne correspond pas à un mappage existant dans la collection, ajoutez le nouveau mappage à la collection de mappages des propriétés gérées avec le code suivant.

    mappings.Add(newMapping);
    mProp.SetMappings(mappings);
    Console.WriteLine(cPropName + "crawled property mapped to " + mProp.Name + " managed property.");
    return;
    

Exemple

Voici le code complet de l'exemple de classe d'application console.

Conditions préalables requises

  • Vérifiez 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 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 PropertyMappingSample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                if (args.Length != 4)
                {
                    Usage();
                    return;
                }

                Guid cPropGUID = new Guid(args[0]);
                string cPropName = args[1];
                int vType = Convert.ToInt32(args[2]);
                string mPropName = args[3];
                /*
                    Replace <SiteName> with the name of
                    a site that uses the SSP
                */
                string strURL = "http://<SiteName>";
                SearchContext context;
                using(SPSite site = new SPSite(strURL))
                {
                   context = SearchContext.GetContext(site);
                }
                Schema sspSchema = new Schema(context);
                ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
                ManagedProperty mProp = properties[mPropName];
                Mapping newMapping = new Mapping(cPropGUID, cPropName, vType, mProp.PID);
                MappingCollection mappings = mProp.GetMappings();
                if(mappings.Contains(newMapping))
                {
                   Console.WriteLine("Mapping failed: requested mapping already exists.");
                    return;
                }
                mappings.Add(newMapping);
                mProp.SetMappings(mappings);
                Console.WriteLine(cPropName + "crawled property mapped to " + mProp.Name + " managed property.");
            }
            catch (Exception ex1)
            {
                Console.WriteLine(ex1.ToString());
                Usage();
            }
        }

        static void Usage()
        {
            Console.WriteLine("Map Crawled Property to Managed Property Sample");
            Console.WriteLine("Usage: PropertyMappingSample.exe <cPropGUID> <cPropName> <cPropVType> <mPropName>");
            Console.WriteLine("<cPropGUID> - The GUID identifying the crawled property.");
            Console.WriteLine("<cPropName> - The crawled property name.");
            Console.WriteLine("<cPropVType> - The variant type of the crawled proeprty.");
            Console.WriteLine("<mPropName> - The name of the managed property.");
        }
    }
}

Voir aussi

Autres ressources

Gestion des métadonnées
Mise en route du modèle objet Administration de la recherche