Partager via


Procédure : modifier le paramètre Poids d'une propriété gérée

Vous pouvez changer le poids appliqué à une propriété gérée à l'aide de la classe ManagedProperty du modèle objet Administration Recherche de contenu d'entreprise. Ce paramètre est appliqué lorsque le contenu est indexé.

Pour changer le poids d'une propriété gérée à partir d'une application console

  1. Dans votre application, affectez 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 l'application console, ajoutez les instructions using suivantes au début du code avec les autres directives d'espaces de noms.

    using Microsoft.SharePoint;
    using Microsoft.Office.Server.Search.Administration;
    
  3. Créez une fonction qui écrit les informations d'utilisation dans la fenêtre de console.

    static void Usage()
    {
      Console.WriteLine("Change Property Weight");
      Console.WriteLine("Usage: PropertyWeightSample.exe ManagedPropertyName <WeightValue>");
      Console.WriteLine("<WeightValue>: Must be formatted as a float.");
    }
    
  4. Dans la fonction Main() de l'application console, ajoutez du code pour vérifier le nombre d'éléments présents dans le paramètre args[]. Il doit être égal à 2. Si ce n'est pas le cas, appelez la fonction Usage() définie à l'étape 3.

    if (args.Length != 2)
    {
    Usage();
    return;
    }
    
  5. Récupérez les valeurs spécifiées dans le paramètre args[] qui sera utilisé pour indiquer le nom de la propriété gérée dont le paramètre de poids doit être modifié, et la nouvelle valeur du paramètre de poids.

    string strPropertyName = args[0].ToLower();
    float newWeight = Convert.ToSingle(args[1]);
    
  6. Pour récupérer l'objet Schema du contexte de recherche du fournisseur de services partagés (SSP), ajoutez le code suivant. Pour plus d'informations sur les manières 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)));
    
  7. Récupérez la collection de propriétés gérées à l'aide du code suivant.

    ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
    
  8. Déterminez si la collection de propriétés gérées comprend la propriété gérée dont vous voulez modifier le poids : examinez la valeur retournée pour la méthode Contains. Si la valeur est false, la propriété n'existe pas, envoyez un message à la console qui indique ce fait.

    if (!properties.Contains(strPropertyName))
    {
       Console.WriteLine strPropertyName + " property does not exist.");
       return;
    }
    
  9. Si la méthode Contains retourne la valeur true, parcourez les propriétés gérées, et pour chacune d'entre elles vérifiez si la propriété Name correspond à la valeur de strPropertyName, si c'est le cas, remplacez la valeur de la propriété Weight par la valeur spécifiée.

    foreach (ManagedProperty property in properties)
    {
        if (property.Name.ToLower() == strPropertyName)
        {
            property.Weight = newWeight;
            Console.WriteLine("Weight value changed for " + strPropertyName + " property.");
            Console.WriteLine("NAME: " + property.Name + "  WEIGHT: " + property.Weight.ToString());
        }
    }
    

Exemple

Voici ensuite le code complet de l'application d'exemple de console décrite dans cette rubrique.

Conditions préalables requises

  • Vérifiez qu'un fournisseur de services partagés existe déjà.

Références de projet

Ajoutez les références de projet suivantes dans le 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.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.Office.Server.Search.Administration;

namespace PropertyWeightSample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                if (args.Length != 2)
                {
                    Usage();
                    return;
                }

                /*
                Replace <SiteName> with the name of a site using the SSP
                */
                string strURL = "http://<SiteName>";
                Schema sspSchema = new Schema(SearchContext.GetContext(new SPSite(strURL)));
                ManagedPropertyCollection properties = sspSchema.AllManagedProperties;

                string strPropertyName = args[0].ToLower();
                float newWeight = Convert.ToSingle(args[1]);

                if (!properties.Contains(strPropertyName))
                {
                    Console.WriteLine(strPropertyName + " property does not exist.");
                    return;
                }

                foreach (ManagedProperty property in properties)
                {
                    if (property.Name.ToLower() == strPropertyName)
                    {
                        property.Weight = newWeight;
                        Console.WriteLine("Weight value changed for " + strPropertyName + " property.");
                        Console.WriteLine("NAME: " + property.Name + "  WEIGHT: " + property.Weight.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Usage();
            }
        }

        private static void Usage()
        {
            Console.WriteLine("Change Property Weight");
            Console.WriteLine("Usage: PropertyWeightSample.exe ManagedPropertyName <WeightValue>");
            Console.WriteLine("<WeightValue>: Must be formatted as a float.");
        }
    }
}

Voir aussi

Référence

Microsoft.Office.Server.Search.Administration.Schema

Autres ressources

Présentation de l'architecture de pertinence de la recherche de contenu d'entreprise
Mise en route avec le modèle objet Administration de recherche de contenu d'entreprise
Administration par programme de la recherche de contenu d'entreprise
Amélioration de la pertinence