Compartir a través de


Procedimiento para agregar un origen de contenido

En Enterprise Search de Microsoft Office SharePoint Server 2007, se indica el contenido que desea que el servicio de indización de búsqueda rastree por los orígenes de contenido que están configurados para el proveedor de servicios compartidos (SSP) del servicio de búsqueda.

Puede tener acceso a orígenes de contenido del SSP desde el objeto ContentSourceCollection del modelo de objetos de administración Enterprise Search. Para crear un origen de contenido, debe usar el método Create de la clase ContentSourceCollection.

El procedimiento siguiente muestra cómo crear mediante programación un origen de contenido con el modelo de objetos Enterprise Search.

Para agregar un origen de contenido mediante programación

  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 clases de la aplicación de consola, agregue las siguientes instrucciones using cerca de la parte superior del código junto con las demás directivas del 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.

    private static void Usage()
    {
       Console.WriteLine("Create Content Source");
       Console.WriteLine("Usage: CreateContentSource.exe ContentSourceName ContentSourceType startaddress [startaddress...]");
    }
    
  4. En la función Main() de la aplicación de consola, agregue código para comprobar el número de elementos en el parámetro args[]; si es inferior a 3, llame a la función WriteUsage() definida en el paso 3.

    if (args.Length < 3)
    {
    Usage();
    return;
    }
    
  5. Agregue el siguiente código para recuperar el objeto Content para el contexto de búsqueda del SSP. Para obtener más información acerca de 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
    */
    string strURL = "http://<SiteName>";
    SearchContext context;
    using (SPSite site = new SPSite(strURL))
    {
        Context = SearchContext.GetContext(site);
    }
    Content sspContent = new Content(context);
    
  6. Recupere los valores especificados en el parámetro args[] mediante la especificación del nombre y el tipo del origen de contenido.

    string strName = args[0];
    string strType = args[1];
    
  7. Recupere la colección de orígenes de contenido.

    ContentSourceCollection sspContentSources = sspContent.ContentSources;
    
  8. Determine si la colección de orígenes de contenido ya incluye un origen de contenido con el mismo nombre que el especificado para el nuevo origen de contenido.

    if(sspContentSources.Exists(strName))
    {
        Console.WriteLine("A content source with that name already exists");
        return;
    }
    
  9. Si el método Exists devuelve false, cree una lista para almacenar las direcciones de inicio que se configurarán para el origen de contenido.

    List<Uri> startAddresses = new List<Uri>();
    for (int i = 2; i < args.Length; ++i)
    {
       startAddresses.Add(new Uri(args[i]));
    }
    
  10. Mediante el valor en la variable strType, determine qué tipo de origen de contenido se creará, llame al método Create y, a continuación, especifique las direcciones de inicio para el nuevo origen de contenido.

    Para los objetos CustomContentSource,FileShareContentSource,ExchangePublicFolderContentSource y LotusNotesContentSource, puede especificar si el componente de índice de búsqueda rastrea sólo la carpeta de cada dirección de inicio o también todas las subcarpetas mediante la propiedad FollowDirectories. Para este ejemplo, este valor se establece en true para esos orígenes de contenido.

    Para el objeto SharePointContentSource, puede especificar si el componente de índice de búsqueda rastrea sólo el sitio de SharePoint especificado en la dirección de inicio o cada sitio incluido en ese nombre de host mediante la propiedad SharePointCrawlBehavior. Para este ejemplo, el valor de esta propiedad especifica que se rastree únicamente el sitio de SharePoint.

    Para el objeto WebContentSource, se puede especificar el número de saltos de página que rastrea el componente de índice de búsqueda mediante la propiedad MaxPageEnumerationDepth, así como el número de saltos de sitio que rastrea del componente de índice de búsqueda mediante la propiedad MaxSiteEnumerationDepth. En este ejemplo, MaxPageEnumerationDepth se establece en 100 y MaxSiteEnumerationDepth se establece en 10.

    switch (strType)
    {
    case ("custom"):
       CustomContentSource customCS = (CustomContentSource)sspContentSources.Create(typeof(CustomContentSource), strName);
       foreach (Uri startAddress in startAddresses)
       {
          customCS.StartAddresses.Add(startAddress);
       }
       customCS.FollowDirectories = true;
       customCS.Update();
       Console.WriteLine(strName + " created.");
       break;
    
    case ("exchange"):
       ExchangePublicFolderContentSource exchangeCS = (ExchangePublicFolderContentSource)sspContentSources.Create(typeof(ExchangePublicFolderContentSource), strName);
       foreach (Uri startAddress in startAddresses)
       {
          exchangeCS.StartAddresses.Add(startAddress);
       }
       exchangeCS.FollowDirectories = true;
       exchangeCS.Update();
       Console.WriteLine(strName + " created.");
       break;
    
    case ("file"):
       FileShareContentSource fileCS = (FileShareContentSource)sspContentSources.Create(typeof(FileShareContentSource), strName);
       foreach (Uri startAddress in startAddresses)
       {
          fileCS.StartAddresses.Add(startAddress);
       }
       fileCS.FollowDirectories = true;
       fileCS.Update();
       Console.WriteLine(strName + " created.");
       break;
    
    case ("lotusnotes"):
       LotusNotesContentSource lotusnotesCS = (LotusNotesContentSource)sspContentSources.Create(typeof(LotusNotesContentSource), strName);
       foreach (Uri startAddress in startAddresses)
       {
          lotusnotesCS.StartAddresses.Add(startAddress);
       }
       lotusnotesCS.FollowDirectories = true;
       lotusnotesCS.Update();
       Console.WriteLine(strName + " created.");
       break;
    
    case ("sharepoint"):
       SharePointContentSource sharepointCS = (SharePointContentSource)sspContentSources.Create(typeof(SharePointContentSource), strName);
       foreach (Uri startAddress in startAddresses)
       {
          sharepointCS.StartAddresses.Add(startAddress);
       }
       sharepointCS.SharePointCrawlBehavior = SharePointCrawlBehavior.CrawlSites;
       sharepointCS.Update();
       Console.WriteLine(strName + " created.");
       break;
    
    case ("web"):
       WebContentSource webCS = (WebContentSource)sspContentSources.Create(typeof(WebContentSource), strName);
       foreach (Uri startAddress in startAddresses)
       {
          webCS.StartAddresses.Add(startAddress);
       }
       webCS.MaxPageEnumerationDepth = 100;
       webCS.MaxSiteEnumerationDepth = 10;
       webCS.Update();
       Console.WriteLine(strName + " created.");
       break;
    
    default:
       Console.WriteLine("Content source type not recognized.");
       break;
    }
    
  11. Por último, se puede escribir la lista de orígenes de contenido en la colección de orígenes de contenido del SSP (para obtener más información, consulte Procedimiento para recuperar los orígenes de contenido para un proveedor de servicios compartidos). Para ello, agregue el código siguiente a la aplicación.

    foreach (ContentSource cs in sspContentSources)
    {
       Console.WriteLine("NAME: " + cs.Name + "  ID: " + cs.Id);
    }
    

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 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.Generic;
using System.Text;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;

namespace CreateContentSourceSample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                if (args.Length < 3)
                {
                    Usage();
                    return;
                }
/*
Replace <SiteName> with the name of a site using the SSP
*/
                string strURL = "<SiteName>";
                SearchContext context;
                using (SPSite site = new SPSite(strURL))
                {
                    Context = SearchContext.GetContext(site);
                }
                Content sspContent = new Content(context);
                string strName = args[0];
                string strType = args[1];
                ContentSourceCollection sspContentSources = sspContent.ContentSources;
                if (sspContentSources.Exists(strName))
                {
                    Console.WriteLine("A content source with that name already exists");
                    return;
                }
                List<Uri> startAddresses = new List<Uri>();
                for (int i = 2; i < args.Length; ++i)
                {
                    startAddresses.Add(new Uri(args[i]));
                }

                switch (strType)
                {
                    case ("custom"):
                        CustomContentSource customCS = (CustomContentSource)sspContentSources.Create(typeof(CustomContentSource), strName);
                        foreach (Uri startAddress in startAddresses)
                        {
                            customCS.StartAddresses.Add(startAddress);
                        }
                        customCS.FollowDirectories = true;
                        customCS.Update();
                        Console.WriteLine(strName + " created.");
                        break;
                    case ("exchange"):
                        ExchangePublicFolderContentSource exchangeCS = (ExchangePublicFolderContentSource)sspContentSources.Create(typeof(ExchangePublicFolderContentSource), strName);
                        foreach (Uri startAddress in startAddresses)
                        {
                           exchangeCS.StartAddresses.Add(startAddress);
                        }
                        exchangeCS.FollowDirectories = true;
                        exchangeCS.Update();
                        Console.WriteLine(strName + " created.");
                        break;
                    case ("file"):
                        FileShareContentSource fileCS = (FileShareContentSource)sspContentSources.Create(typeof(FileShareContentSource), strName);
                        foreach (Uri startAddress in startAddresses)
                        {
                            fileCS.StartAddresses.Add(startAddress);
                        }
                        fileCS.FollowDirectories = true;
                        fileCS.Update();
                        Console.WriteLine(strName + " created.");
                        break;
                    case ("lotusnotes"):
                        LotusNotesContentSource lotusnotesCS = (LotusNotesContentSource)sspContentSources.Create(typeof(LotusNotesContentSource), strName);
                        foreach (Uri startAddress in startAddresses)
                        {
                         lotusnotesCS.StartAddresses.Add(startAddress);
                        }
                        lotusnotesCS.FollowDirectories = true;
                        lotusnotesCS.Update();
                        Console.WriteLine(strName + " created.");
                        break;
                    case ("sharepoint"):
                        SharePointContentSource sharepointCS = (SharePointContentSource)sspContentSources.Create(typeof(SharePointContentSource), strName);
                        foreach (Uri startAddress in startAddresses)
                        {
                         sharepointCS.StartAddresses.Add(startAddress);
                        }
                        sharepointCS.SharePointCrawlBehavior = SharePointCrawlBehavior.CrawlSites;
                        sharepointCS.Update();
                        Console.WriteLine(strName + " created.");
                        break;
                    case ("web"):
                        WebContentSource webCS = (WebContentSource)sspContentSources.Create(typeof(WebContentSource), strName);
                        foreach (Uri startAddress in startAddresses)
                        {
                            webCS.StartAddresses.Add(startAddress);
                        }
                        webCS.MaxPageEnumerationDepth = 100;
                        webCS.MaxSiteEnumerationDepth = 10;
                        webCS.Update();
                        Console.WriteLine(strName + " created.");
                        break;

                    default:
                        Console.WriteLine("Invalid content source type.");
                        break;
                }
                foreach (ContentSource cs in sspContentSources)
                {
                    Console.WriteLine("NAME: " + cs.Name + "  ID: " + cs.Id);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
        private static void Usage()
        {
            Console.WriteLine("Create Content Source");
            Console.WriteLine("Usage: CreateContentSource.exe ContentSourceName ContentSourceType startaddress [startaddress...]");
        }
  }
}

Para probar este código de ejemplo, siga estos pasos:

  1. Compile el proyecto para la aplicación de consola.

  2. Abra una ventana de comandos y navegue hasta el directorio que contiene CreateContentSourceSample.exe.

  3. En la ventana de comandos, ejecute lo siguiente:

    CreateContentSourceSample.exe <ContentSourceName> <ContentSourceType> <StartAddress1> <StartAddress2> etc…
    

    Nota

    Reemplace <ContentSourceName> por el nombre del origen de contenido que desee crear y <ContentSourceType> por uno de los siguientes para indicar el tipo de origen de contenido que se creará: custom, exchange, file, lotusnotes, sharepoint, web.

    Reemplace <StartAddress1> por la primera dirección de inicio para el origen de contenido, <StartAddress2> por la segunda dirección de inicio y así sucesivamente.

Vea también

Otros recursos

Introducción al modelo de objetos de administración del motor de búsqueda Enterprise Search
Procedimiento: Devolver el contexto de búsqueda para el proveedor del servicio de búsqueda
Introducción a los orígenes de contenido
Procedimiento para recuperar los orígenes de contenido para un proveedor de servicios compartidos
Procedimiento para eliminar un origen de contenido
Procedimiento para administrar mediante programación el rastreo de un origen de contenido
Procedimiento para configurar mediante programación una programación de rastreo para un origen de contenido