Procedimiento para recuperar propiedades rastreadas para una categoría del esquema de búsqueda
Puede usar el modelo de objetos de administración de Enterprise Search para obtener acceso a las categorías de propiedades rastreadas para los metadatos de búsqueda de un proveedor de servicios compartidos (SSP) mediante el objeto Schema. A continuación, puede recuperar la lista de propiedades rastreadas asociadas a cada categoría a través del método GetAllCrawledProperties del objeto Category.
El siguiente procedimiento muestra cómo escribir la lista completa de propiedades rastreadas, junto con sus identificadores GUID, del conjunto de propiedades y tipos de datos Variant desde una aplicación de consola.
Para configurar la aplicación para que use el modelo de objetos de administración del motor de búsqueda Enterprise Search
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 clase de la aplicación de consola, agregue las siguientes instrucciones using cerca de la parte superior del código con el resto de directivas de espacio de nombres.
using Microsoft.SharePoint; using Microsoft.Office.Server.Search.Administration;
Para comprobar que el usuario ha especificado un valor para el nombre de categoría y, de no ser así, proporcionar ayuda al usuario
Cree una función para escribir la información de uso en la ventana de la consola.
static void Usage() { Console.WriteLine("Retrieve Crawled Properties by Category Sample"); Console.WriteLine("Usage: GetCrawledPropertiesSample.exe CategoryName"); }
En la función Main() de la aplicación de consola, agregue código para comprobar si el número de elementos en el parámetro args[] es igual a 1; de no ser así (lo cual indica que no se especificó ningún valor para identificar la categoría), debe llamar a la función Usage() definida en el paso anterior.
if (args.Length != 1) { Usage(); return; }
Para recuperar las categorías para el esquema de búsqueda del SSP y mostrar la lista de propiedades rastreadas para dicha categoría
Use el siguiente código para crear una variable de cadena local para el nombre de categoría y establézcalo en el valor especificado en el parámetro args[]:
string strCategoryName = args[0];
Use el siguiente código para recuperar el objeto Schema para el contexto de búsqueda del SSP. Para obtener más información acerca de las formas 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)));
Use el siguiente código para recuperar la colección de categorías para el esquema de búsqueda:
CategoryCollection categories = sspSchema.AllCategories;
Determine si la colección de categorías incluye la categoría especificada; de no ser así, use el siguiente código para mostrar la lista de categorías de la colección:
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; }
Si la categoría existe, use el siguiente código para recuperar la lista de propiedades rastreadas de dicha categoría y escribir en la consola el nombre, el identificador GUID del conjunto de propiedades y el tipo Variant para cada propiedad rastreada de la lista:
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()); } } }
Ejemplo
A continuación se muestra el código completo para la muestra de clase de aplicación de la consola.
Requisitos previos
- Asegúrese de que ya se ha creado un proveedor de servicios compartidos.
Referencias del 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;
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");
}
}
}