Partilhar via


Usar balão de serviço Web de Enriquecimento de Conteúdo para o SharePoint Server

Saiba como implementar o serviço Web de Enriquecimento de conteúdo no SharePoint para modificar as propriedades gerenciadas dos itens rastreados antes de serem indexados.

A pesquisa no SharePoint permite que os desenvolvedores adicionem uma etapa personalizada ao processamento de conteúdo para modificar as propriedades gerenciadas de itens rastreados antes de serem indexados. Essa etapa personalizada requer a implementação de um serviço da web externos - o serviço web de enriquecimento de conteúdo - que pode enriquecer a itens que estão sendo processadas; as propriedades gerenciadas e, em seguida, configuração do sistema para chamar esse serviço web externo.

A implementação do serviço Web de enriquecimento de conteúdo externo depende de interfaces no namespace Microsoft.Office.Server.Search.ContentProcessingEnrichment .

Cmdlets do Windows PowerShell para usar com o serviço web de enriquecimento de conteúdo

A funcionalidade de enriquecimento de conteúdo está configurada e ativada com os seguintes cmdlets Windows PowerShell:

Esses cmdlets Windows PowerShell permitem que um administrador configurar o seguinte:

  • Um conjunto personalizado de propriedades gerenciadas a serem enviados para o serviço web externo.
  • Um conjunto personalizado de propriedades gerenciadas a serem retornados pelo serviço web externo.
  • Uma condição de gatilho, que representa um predicado ser executado para cada item que estão sendo processada. Se uma condição de disparador for usada, o serviço web externo é chamado somente quando o gatilho é avaliada como true. Se nenhuma condição de disparador for usada, todos os itens são enviados para o serviço web externo.
  • FailureMode que habilita o serviço web para uma falha itens que não podem ser processados durante a etapa de enriquecimento de conteúdo ou passam esses itens por meio de sem nenhuma modificação. Se os itens são falhou, eles não estão indexados e um aviso que é gravado no log ULS.
  • Um DebugMode, que permite a rápida criação de protótipos do serviço web externo. Quando habilitada, o serviço web externo recebe todas as propriedades gerenciadas disponíveis. Em DebugMode, a condição de disparador é ignorada e nenhuma saída de propriedades gerenciadas pelo serviço da web também são ignorados.
  • Um comutador de SendRawData que envia os dados brutos de um item em formato binário. Isso é útil quando mais de metadados são necessário que o que pode ser recuperado da versão analisada do item.

In addition, there are options for specifying size limits and timeouts. Consulte Processamento de conteúdo personalizado com a chamada do serviço Web enriquecimento de conteúdo para obter uma lista completa de propriedades configuráveis.

Pré-requisitos para usar a chamada do serviço Web de Enriquecimento de Conteúdo para SharePoint

Para concluir este tutorial, você deve ter o seguinte instalado em seu ambiente de desenvolvimento:

  • Pesquisa no SharePoint
  • Visual Studio 2010 ou semelhante .NET Framework - ferramenta de desenvolvimento compatível
  • Privilégios de administrador na instalação do SharePoint
  • Um servidor no qual você poderá hospedar o serviço com o IIS

Você também deve saber como criar um site no IIS e implantar um serviço nele

Configurar um projeto de serviço de enriquecimento de conteúdo

Nesta etapa, você irá criar o projeto de implementação do serviço e, em seguida, adicione as referências necessárias ao projeto.

Para criar o projeto de um serviço de enriquecimento de conteúdo

  1. No Visual Studio, na barra de menus, escolha arquivo, novoprojeto.
  2. Em tipos de projeto, sob Visual c#, escolha WCF.
  3. Em modelos, escolha o Aplicativo de serviço do WCF. No campo nome, digite ContentProcessingEnrichmentService e escolha o botão OK.
  4. Exclua a interface de classe e Service1 gerado automaticamente Service1.

Adicionar referências ao projeto de serviço de enriquecimento de conteúdo

  1. No menu Projeto, escolha Adicionar Referência.

  2. Escolha Procurar e localize o assembly Microsoft.Office.Server.Search.ContentProcessingEnrichment na pasta de instalação do SharePoint em Caminho de Instalação\Microsoft Office Servers\15.0\Search\Applications\External.

    Observação

    [!OBSERVAçãO] Se o SharePoint estiver instalado em uma máquina que não seja sua máquina de desenvolvimento, copie o assembly sobre em sua máquina de desenvolvimento e fazer referência a ele a partir daí.

Criar um serviço de enriquecimento de conteúdo

Seu serviço de enriquecimento de processamento de conteúdo deve implementar a interface IContentProcessingEnrichmentService do namespace Microsoft.Office.Server.Search.ContentProcessingEnrichment . O exemplo de código nesta seção é uma implementação básica desta interface.

A implementação exige duas propriedades gerenciadas para cada item recebido por meio do serviço web externo: Author e Filename. O Author é uma lista de objetos String e o Filename é um objeto String.

A implementação de IContentProcessingEnrichmentService grava os dados binários brutos para um local temporário em disco, com Filename como o nome do arquivo. Em seguida, um novo nome é adicionado à lista de autores e retornado para o componente de processamento do conteúdo.

Observação

Se a fonte de dados do rastreamento for uma fonte de dados externa, a propriedade ItemRawData não terá um fluxo de dados, mas será nula. A representação de cadeia de caracteres dos dados brutos será retornada na propriedade Item.Body. Essa é uma limitação do rastreador de fonte de dados BCS.

Para criar o arquivo de classe para o serviço de enriquecimento de conteúdo

  1. No menu projeto, escolha Adicionar Novo Item.
  2. Em Visual c# em Modelos instalados, escolha Web e escolha Serviço WCF.
  3. Digite ContentProcessingEnrichmentService.svc e escolha Adicionar.
  4. Exclua a interface de IContentProcessingEnrichmentService.cs que é criada.

Para modificar o código padrão na classe ContentProcessingEnrichmentService

  1. Substitua as diretivas de using existente com as seguintes diretivas using no início da classe.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using Microsoft.Office.Server.Search.ContentProcessingEnrichment;
    using Microsoft.Office.Server.Search.ContentProcessingEnrichment.PropertyTypes;
    
  2. Exclua o método DoWork.

Para implementar o método de interface IContentProcessingEnrichmentService

  1. Adicione o código a seguir dentro da classe para definir os membros e constantes necessários.

    // Defines the name of the managed property 'Filename'.
    private const string FileNameProperty = "Filename";
    
    // Defines the name of the managed property 'Author'
    private const string AuthorProperty = "Author";
    
    // Defines the temporary directory where binary data will be stored.
    private const string TempDirectory = @"C:\\Temp";
    
    // Defines the error code for managed properties with an unexpected type.
    private const int UnexpectedType = 1;
    
    // Defines the error code for encountering unexpected exceptions.
    private const int UnexpectedError = 2;
    
    private readonly ProcessedItem processedItemHolder = new ProcessedItem
    {
       ItemProperties = new List<AbstractProperty>()
    };
    
  2. Adicione o seguinte código para o método ProcessItem.

    public ProcessedItem ProcessItem(Item item)
    {
       processedItemHolder.ErrorCode = 0;
       processedItemHolder.ItemProperties.Clear();
       try
       {
          // Iterate over each property received and locate the two properties we
          // configured the system to send.
          foreach (var property in item.ItemProperties)
          {
             // Check if this is the author property.
             if (property.Name.Equals(AuthorProperty, StringComparison.Ordinal))
             {
                var author = property as Property<List<string>>;
                if (author == null)
                {
                   // The author property was not of the expected type.
                   // Update the error code and return.
                      processedItemHolder.ErrorCode = UnexpectedType;
                      return processedItemHolder;
                }
                   // Adding a new author to the list so it will become searchable.
                      author.Value.Add("ExampleService");
                      processedItemHolder.ItemProperties.Add(author);
             }
             else if (property.Name.Equals(FileNameProperty, StringComparison.Ordinal))
             {
                var filename = property as Property<string>;
                if (filename == null)
                {
                   // The file name property was not of the expected type.
                   // Update error code and return.
                      processedItemHolder.ErrorCode = UnexpectedType;
                      return processedItemHolder;
                }
                if (!string.IsNullOrEmpty(filename.Value))
                {
                   var fullFilePath = string.Join(char.ToString(Path.DirectorySeparatorChar), TempDirectory, filename.Value);
                   if (item.RawData != null)
                   {
                      var outputFile = File.Create(fullFilePath);
                      using (var writer = new BinaryWriter(outputFile))
                      {
                         writer.Write(item.RawData);
                      }
                   }
                }
             }
          }
       }
       catch (Exception)
       {
          processedItemHolder.ErrorCode = UnexpectedError;
       } return processedItemHolder;
    }
    
  3. Modificar web.config para aceitar mensagens até 8 MB e configurar readerQuotas para ser um valor grande o suficiente.

  4. Adicione o seguinte dentro <system.serviceModel>de .

    <bindings>
       <basicHttpBinding>
       <!-- The service will accept a maximum blob of 8 MB. -->
          <binding maxReceivedMessageSize = "8388608">
             <readerQuotas maxDepth="32"
              maxStringContentLength="2147483647"
              maxArrayLength="2147483647"
              maxBytesPerRead="2147483647"
              maxNameTableCharCount="2147483647" />
                 <security mode="None" />
          </binding>
       </basicHttpBinding>
    </bindings>
    

Compile o projeto e implantá-la ao seu site do IIS.

Configurar o SharePoint

Abra o SharePoint Management Shell e insira a seguinte sequência de Windows PowerShell cmdlets.

$ssa = Get-SPEnterpriseSearchServiceApplication
$config = New-SPEnterpriseSearchContentEnrichmentConfiguration
$config.Endpoint = http://Site_URL/ContentEnrichmentService.svc
$config.InputProperties = "Author", "Filename"
$config.OutputProperties = "Author"
$config.SendRawData = $True
$config.MaxRawDataSize = 8192
Set-SPEnterpriseSearchContentEnrichmentConfiguration -SearchApplication
$ssa -ContentEnrichmentConfiguration $config

A sequência de cmdlets Windows PowerShell ajuda você a criar primeiro um objeto de configuração usando o cmdlet New-SPEnterpriseSearchContentEnrichmentConfiguration. O objeto de configuração seja apontado, em seguida, em direção a implementação do serviço; Como prática recomendada, use http://localhost:808 para Site_URL.

As propriedades gerenciadas Author e Filename são enviadas ao seu serviço para cada item que está sendo processado. Além disso, você informado o cliente do serviço web que o serviço produzirá uma propriedade gerenciada única, Author. Em adicionais para propriedades gerenciadas, o cliente do serviço web é configurado para enviar os dados brutos do item com uma limitação do tamanho dos dados. Por fim, o cmdlet Set-SPEnterpriseSearchContentEnrichmentConfigurationé usado para armazenar toda a configuração. Depois que esse cmdlet retorna, a configuração está ativa e o componente de rastreamento usa esta configuração para o seu próximo processo de rastreamento.

Depois que isso for concluído, você pode iniciar um rastreamento completo do seu site. Se o serviço está funcionando corretamente, você deve ser capaz de monitorar a pasta temporária no servidor que hospeda o site para os documentos gravados no disco.

Você pode remover a configuração posteriormente usando o seguinte cmdlet Windows PowerShell.

Remove-SPEnterpriseSearchContentEnrichmentConfiguration -SearchApplication $ssa

Confira também