Compartir a través de


Procedimiento para asignar una propiedad rastreada a una propiedad administrada

El objeto Schema del modelo de objetos de administración de Enterprise Search proporciona acceso a las propiedades administradas configuradas para el servicio de búsqueda de un proveedor de servicios compartidos (SSP). Para obtener más información sobre el objeto Schema, consulte Administración de metadatos.

El procedimiento siguiente muestra cómo se asigna una propiedad rastreada a una propiedad administrada.

  1. En la aplicación, establezca referencias a las siguientes DLL:

    • Microsoft.SharePoint.dll

    • Microsoft.Office.Server.dll

    • Microsoft.Office.Server.Search.dll

  2. En el archivo de clase de la aplicación de consola, agregue la siguiente instrucción using cerca de la parte superior del código con el resto de las directivas de espacio de nombres.

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

Para comprobar que los valores necesarios para la asignación de la propiedad se hayan pasado en el parámetro args[] y, en caso contrario, ver información sobre el uso

  1. Cree una función para escribir la información de uso en la ventana de la consola.

    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. 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 4; si no, (lo que significa que no todos los valores necesarios para crear la asignación de propiedades se hayan pasado en el parámetro args[]), a continuación, llame a la función Usage() definida en el paso anterior.

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

Para crear la asignación de la propiedad

  1. Cree variables locales que contengan los valores de la asignación de propiedad que se pasa en el parámetro args[] usando el código siguiente.

    Guid cPropGUID = new Guid(args[0]);
    string cPropName = args[1];
    int vType = Convert.ToInt32(args[2]);
    string mPropName = args[3];
    
  2. Recupere el objeto Schema para el contexto de búsqueda de SSP, mediante el siguiente código. Para obtener más información sobre las formas de 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
    */
    SearchContext context;
    string strURL = "http://<SiteName>";
    using(SPSite site = new SPSite(strURL))
    {
    context = SearchContext.GetContext(site);
    }
    Schema sspSchema = new Schema(context);
    
  3. Recupere la colección de propiedades administradas usando el siguiente código:

    ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
    
  4. Recupere la propiedad administrada con el nombre especificado en el parámetro args[3].

    ManagedProperty mProp = properties[mPropName];
    
  5. Cree una instancia de la clase Mapping con los valores de los pasos anteriores.

    Mapping newMapping = new Mapping(cPropGUID, cPropName, vType, mProp.PID);
    
  6. Recupere la colección de asignaciones para esa propiedad administrada, compruebe si la asignación creada en el paso 5 coincide con alguna asignación existente de la colección y, si es así, muestre esa información en la consola mediante el siguiente código.

    MappingCollection mappings = mProp.GetMappings();
    if(mappings.Contains(newMapping))
    {
        Console.WriteLine("Mapping failed: requested mapping already exists.");
        return;
    }
    
  7. Si la nueva asignación no coincide con una asignación existente de la colección, agregue la nueva asignación a la colección de asignaciones de la propiedad administrada con el código siguiente.

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

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 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.");
        }
    }
}

Vea también

Otros recursos

Administración de metadatos
Introducción al modelo de objetos de administración de búsqueda