Compartilhar via


Como a: Adicionar uma fonte de conteúdo

Em Pesquisa da empresa no Microsoft Office do SharePoint Server 2007, você indicar que de conteúdo você desejar a indexação pesquisa serviço para rastrear por meio de de conteúdo fontes que estão configurados do serviço de pesquisa compartilhados os serviços do provedor (SSP).

Você pode do acessar o SSP de conteúdo fontes a partir de objeto ContentSourceCollection T:Microsoft.Office.Server.Search.Administration.ContentSourceCollection do modelo objeto administração Pesquisar da empresa osssearchshort. To create a content source, you use the Create method of the ContentSourceCollection class.

O seguinte procedimento mostra como cria um de conteúdo programaticamente origem usando o modelo objeto Pesquisar da empresa osssearchshort.

Para adicionar um de conteúdo origem programaticamente

  1. No seu aplicativo, definir referências para o seguinte DLLs:

    • Microsoft.SharePoint.dll

    • Microsoft.Office.Server.dll

    • Microsoft.Office.Server.Search.dll

  2. No arquivo classe do seu aplicativo de console, adicionar o seguinte using instruções perto de parte superior da codificar Using com as outras diretivas de espaço para nome.

    using Microsoft.SharePoint;
    using Microsoft.Office.Server.Search.Administration;
    
  3. Crie uma função para gravar informações de uso para o janela do console.

    private static void Usage()
    {
       Console.WriteLine("Create Content Source");
       Console.WriteLine("Usage: CreateContentSource.exe ContentSourceName ContentSourceType startaddress [startaddress...]");
    }
    
  4. No Main() Main() função do aplicativo de console, adicionar codificar a verificar o número de itens de parâmetro args[] args []; Se for menor que 3, em seguida, chamar o WriteUsage() WriteUsage() função definidos na etapa 3.

    if (args.Length < 3)
    {
    Usage();
    return;
    }
    
  5. Adicione o seguinte codificar para recuperar o objeto de conteúdo Content para pesquisa contexto do SSP. Para obter mais informações sobre maneiras para recuperar o contexto pesquisa, consulte Como a: Return o contexto de pesquisa para o provedor de serviço de pesquisa.

    /*
    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. Recuperar os valores especificados no parâmetro [] args[] args especificando o nome e tipo para o de conteúdo origem.

    string strName = args[0];
    string strType = args[1];
    
  7. Recuperar a coleção de de conteúdo fontes.

    ContentSourceCollection sspContentSources = sspContent.ContentSources;
    
  8. Determinar se a coleção de de conteúdo fontes já inclui um de conteúdo origem com o mesmo nome àquela especificada para o novo de conteúdo origem.

    if(sspContentSources.Exists(strName))
    {
        Console.WriteLine("A content source with that name already exists");
        return;
    }
    
  9. Se o método Exists Exists retorna false, crie uma lista para armazenar a iniciar endereços para configurar para o de conteúdo origem.

    List<Uri> startAddresses = new List<Uri>();
    for (int i = 2; i < args.Length; ++i)
    {
       startAddresses.Add(new Uri(args[i]));
    }
    
  10. Usando o valor na variável de strType strType, determine qual de conteúdo tipo origem para criar, chamar o Create Criar método e, em seguida, especificar os endereços iniciar para o novo de conteúdo origem.

    For the CustomContentSource, FileShareContentSource, ExchangePublicFolderContentSource, and LotusNotesContentSource objects, you can specify whether the search index component crawls only the folder of each start address or all the subfolders as well by setting the FollowDirectories property. Para esse exemplo, esse valor é definido como true para esses de conteúdo fontes.

    Para o objeto SharePointContentSource T:Microsoft.Office.Server.Search.Administration.SharePointContentSource, você pode especificar se o componente índice pesquisa rastreie somente o site do SharePoint especificado no endereço de iniciar, ou cada site incluída em que nome do host usando o SharePointCrawlBehavior P:Microsoft.Office.Server.Search.Administration.SharePointContentSource.SharePointCrawlBehavior propriedade. Para esse exemplo, o valor nessa propriedade especifica a rastrear somente a site do SharePoint.

    Para o objeto WebContentSource T:Microsoft.Office.Server.Search.Administration.WebContentSource, você pode especificar quantos saltos página rastreia o componente índice pesquisa usando o MaxPageEnumerationDepth propriedade, as well as How site vários saltos o componente índice pesquisa rastreia usando o MaxSiteEnumerationDepth P:Microsoft.Office.Server.Search.Administration.WebContentSource.MaxSiteEnumerationDepth propriedade. Neste exemplo, MaxPageEnumerationDepth, MaxSiteEnumerationDepth é definida como 100 e para 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. Finalmente, você pode escrever fora a lista de de conteúdo fontes na coleção do SSP de de conteúdo fontes (para obter mais informações, consulte Como a: recuperar as fontes de conteúdo para um provedor serviços compartilhados). Para fazer isso, adicionar o seguinte codificar para seu aplicativo.

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

Exemplo

Este é o completo codificar para o aplicativo de console exemplo descrito neste tópico.

Pré-requisitos

  • Certifique-se que um provedor de serviços compartilhados já é criado.

Referências do projeto

Adicione o seguinte referências do projeto no seu projeto código do aplicativo console antes execução neste exemplo:

  • 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 testar este amostra de código, faça o seguinte:

  1. Compile o projeto para o aplicativo console.

  2. Abra um comando janela e navegar para o Diretório que contém CreateContentSourceSample.exe.

  3. Na janela de comando, executar o seguinte:

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

    Dica

    Replace <ContentSourceName> with the name of the content source you want to create, and <ContentSourceType> with one of the following to indicate the type of content source to create: custom, exchange, file, lotusnotes, sharepoint, web.

    Replace <StartAddress1> with the first start address for the content source, <StartAddress2> with the second start address, and so on.

Consulte também

Outros recursos

Guia de Introdução com o modelo de objeto de administração de pesquisa da empresa
Como a: Return o contexto de pesquisa para o provedor de serviço de pesquisa
Visão geral sobre fontes de conteúdo
Como a: recuperar as fontes de conteúdo para um provedor serviços compartilhados
Como a: excluir uma fonte de conteúdo
Como a: gerenciar de forma programática o rastreamento de uma fonte de conteúdo
Como: de forma programática configurar um agendamento de rastreamento para uma fonte de conteúdo