Compartir a través de


Procedimiento para crear 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 crear una propiedad administrada desde una aplicación de consola.

Para crear una propiedad administrada desde una aplicación de consola

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

    • Microsoft.SharePoint.dll

    • Microsoft.Office.Server.dll

    • Microsoft.Office.Server.Search.dll

  2. 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;
    
  3. Cree una función para escribir la información de uso en la ventana de la consola.

    static void Usage()
    {
       Console.WriteLine("Create Managed Property");
       Console.WriteLine("Usage: CreateManagedPropertiesSample.exe PropertyName <DataType>");
       Console.WriteLine("<DataType> - The data type for the new property.  Must be one of:");
       Console.WriteLine("binary");
       Console.WriteLine("datetime");
       Console.WriteLine("decimal");
       Console.WriteLine("integer");
       Console.WriteLine("text");
       Console.WriteLine("yesno");
    }
    
  4. 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;
    }
    
  5. Recupere los valores especificados en el parámetro args[], que se va a usar para especificar el nombre y el tipo de datos para la propiedad administrada.

    string strName = args[0];
    string strDataType = args[1];
    
  6. Para recuperar el objeto Schema para el contexto de búsqueda del SSP, agregue el siguiente código. 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)));
    
  7. Recupere la colección de propiedades administradas mediante el siguiente código:

    ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
    
  8. Determine si la colección de propiedades administradas ya incluye una propiedad administrada con el mismo nombre que el especificado para la nueva propiedad.

    if (properties.Contains(strName))
    {
       Console.WriteLine("Managed Property with that name already exists.");
       return;
    }
    
  9. Si el método Contains devuelve false, con el valor de la variable strDataType, determine qué tipo de datos se van a usar y, a continuación, llame al método Create para crear la nueva propiedad administrada.

    switch (strDataType)
    {
        case ("binary"):
    properties.Create(strName, ManagedDataType.Binary);
    Console.WriteLine(strName + " created.");
    break;
    
        case ("datetime"):
    properties.Create(strName, ManagedDataType.DateTime);
                 Console.WriteLine(strName + " created.");
                 break;
    
        case ("decimal"):
        properties.Create(strName, ManagedDataType.Decimal);
                 Console.WriteLine(strName + " created.");
                 break;
    
        case ("integer"):
        properties.Create(strName, ManagedDataType.Integer);
                 Console.WriteLine(strName + " created.");
                 break;
    
        case ("text"):
        properties.Create(strName, ManagedDataType.Text);
                 Console.WriteLine(strName + " created.");
                 break;
    
        case ("yesno"):
        properties.Create(strName, ManagedDataType.YesNo);
                 Console.WriteLine(strName + " created.");
                 break;
    
        default:
        Console.WriteLine("Datatype not recognized.");
                 Usage();
                 break;
    }
    

Ejemplo

A continuación, se muestra el código completo para la aplicación de consola de ejemplo que se describe en este tema.

Requisitos previos

  • Asegúrese de que ya se haya 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;
using System.Text;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;

namespace CreateManagedPropertiesSample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                if (args.Length != 2)
                {
                    Usage();
                    return;
                }
                string strName = args[0];
                string strDataType = args[1];
/*
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;
                if (properties.Contains(strName))
                {
                    Console.WriteLine("Managed Property with that name already exists.");
                    return;
                }
                switch (strDataType)
                {
                    case ("binary"):
                        properties.Create(strName, ManagedDataType.Binary);
                        Console.WriteLine(strName + " created.");
                        break;

                    case ("datetime"):
                        properties.Create(strName, ManagedDataType.DateTime);
                        Console.WriteLine(strName + " created.");
                        break;

                    case ("decimal"):
                        properties.Create(strName, ManagedDataType.Decimal);
                        Console.WriteLine(strName + " created.");
                        break;

                    case ("integer"):
                        properties.Create(strName, ManagedDataType.Integer);
                        Console.WriteLine(strName + " created.");
                        break;

                    case ("text"):
                        properties.Create(strName, ManagedDataType.Text);
                        Console.WriteLine(strName + " created.");
                        break;

                    case ("yesno"):
                        properties.Create(strName, ManagedDataType.YesNo);
                        Console.WriteLine(strName + " created.");
                        break;

                    default:
                        Console.WriteLine("Datatype not recognized.");
                        Usage();
                        break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
        static void Usage()
        {
            Console.WriteLine("Create Managed Property");
            Console.WriteLine("Usage: CreateManagedPropertiesSample.exe PropertyName <DataType>");
            Console.WriteLine("<DataType> - The data type for the new property.  Must be one of:");
            Console.WriteLine("binary");
            Console.WriteLine("datetime");
            Console.WriteLine("decimal");
            Console.WriteLine("integer");
            Console.WriteLine("text");
            Console.WriteLine("yesno");
        }
    }
}

Vea también

Otros recursos

Administración de metadatos
Procedimiento: Devolver el contexto de búsqueda para el proveedor del servicio de búsqueda
Procedimiento para recuperar las propiedades administradas para un proveedor de servicios compartidos
Procedimiento para eliminar una propiedad administrada