Procedimiento para cambiar el valor de peso de una propiedad administrada
Puede cambiar el peso aplicado a una propiedad administrada si usa la clase ManagedProperty del modelo de objetos de administración Enterprise Search. Esta configuración se aplica cuando se indiza el contenido.
Para cambiar el peso de una propiedad administrada desde una aplicación de consola
En la aplicación, establezca referencias a los siguientes archivos DLL:
Microsoft.SharePoint.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.Search.dll
En el archivo de clases de la aplicación de consola, agregue las siguientes instrucciones using cerca de la parte superior del código, junto a las demás directivas de espacio de nombres.
using Microsoft.SharePoint; using Microsoft.Office.Server.Search.Administration;
Cree una función para escribir la información de uso en la ventana de la consola.
static void Usage() { Console.WriteLine("Change Property Weight"); Console.WriteLine("Usage: PropertyWeightSample.exe ManagedPropertyName <WeightValue>"); Console.WriteLine("<WeightValue>: Must be formatted as a float."); }
En la función Main() de la aplicación de consola, agregue código para comprobar el número de elementos del parámetro args[]; debe ser igual a 2. De lo contrario, llame a la función Usage() definida en el paso 3.
if (args.Length != 2) { Usage(); return; }
Recupere los valores especificados en el parámetro args[] que se usará para especificar el nombre de la propiedad administrada para cambiar el valor de peso por el nuevo valor de peso.
string strPropertyName = args[0].ToLower(); float newWeight = Convert.ToSingle(args[1]);
Para recuperar el objeto Schema para el contexto de búsqueda del proveedor de servicios compartidos (SSP), agregue el siguiente código. Para obtener más información acerca de las distintas formas existentes para recuperar el contexto de búsqueda, consulte Procedimiento: Devolver el contexto de búsqueda para el proveedor del servicio de búsqueda.
/* Replace <SiteName> with the name of a site using the SSP */ string strURL = "http://<SiteName>"; Schema sspSchema = new Schema(SearchContext.GetContext(new SPSite(strURL)));
Recupere la colección de propiedades administradas mediante el siguiente código.
ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
Para determinar si la colección de propiedades administradas incluye la propiedad administrada cuyo peso desea cambiar, compruebe el valor devuelto para el método Contains. Si es false, la propiedad no existe, por lo que se escribirá un mensaje a la consola para indicarlo.
if (!properties.Contains(strPropertyName)) { Console.WriteLine strPropertyName + " property does not exist."); return; }
Si el método Contains devuelve el valor true, recorra las propiedades administradas y compruebe para cada una, si la propiedad Name coincide con el valor de strPropertyName y, de ser así, cambie la propiedad Weight al valor especificado.
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()); } }
Ejemplo
A continuación, se muestra el código completo para la aplicación de consola de ejemplo.
Requisitos previos
- Asegúrese de que ya se ha creado un proveedor de servicios compartidos.
Referencias de proyecto
Antes de ejecutar este ejemplo, agregue las siguientes referencias de proyecto al proyecto de código de aplicación de consola:
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.");
}
}
}
Vea también
Referencia
Microsoft.Office.Server.Search.Administration.Schema
Otros recursos
Introducción a la arquitectura de relevancia del motor de búsqueda Enterprise Search
Introducción al modelo de objetos de administración del motor de búsqueda Enterprise Search
Motor de búsqueda Enterprise Search administrado mediante programación
Mejora de la relevancia