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
Dans votre application, affectez des références aux DLL suivantes :
Microsoft.SharePoint.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.Search.dll
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;
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."); }
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; }
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]);
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)));
Récupérez la collection de propriétés gérées à l'aide du code suivant.
ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
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; }
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