Использование вызова веб-службы обогащения контента для SharePoint Server

Узнайте, как сделать так, чтобы веб-служба обогащения контента в SharePoint изменяла управляемые свойства обойденных элементов перед их индексацией.

Поиск в SharePoint позволяет разработчикам добавить настраиваемый шаг к обработке содержимого, чтобы изменить управляемые свойства элементов, для обхода контента, прежде чем они будут индексированы. Этот шаг настраиваемого необходимо реализовать внешние веб-службы — веб-служба повышения качества контента--можно расширить управляемых свойств элементов, обрабатываемых; и затем Настройка системы, чтобы вызвать этот внешний веб-службы.

Реализация внешней веб-службы обогащения содержимого зависит от интерфейсов в пространстве имен Microsoft.Office.Server.Search.ContentProcessingEnrichment .

Командлеты Windows PowerShell для использования в веб-службу повышения качества контента

Функциональные возможности повышения качества контента настроить и включить с помощью следующих командлетов Windows PowerShell:

Эти командлеты Windows PowerShell включить администратор может настроить следующие параметры:

  • Пользовательский набор управляемых свойств для отправки внешних веб-службы.
  • Пользовательский набор управляемых свойств должно быть возвращено внешних веб-службой.
  • Условие триггер, который представляет предикат на выполнение для всех элементов, обрабатываемых. Если используется условие запуска внешних веб-службы вызывается только в том случае, если триггер true. При использовании без условие запуска всех элементов, передаются в внешние веб-службы.
  • FailureMode, которая позволяет веб-служба, либо не удается элементов, которые не удается обработать на этапе повышения качества контента или передайте эти элементы через без внесения изменений. Если не удалось выполнить элементы, не индексируются и предупреждения, записывается в журнал ULS.
  • DebugMode, обеспечивающий быстрого создания прототипов внешние веб-службы. При включении этого параметра внешних веб-служба получает все доступные управляемого свойства. В DebugModeусловие запуска игнорируется и вывод управляемых свойств веб-службой, также игнорируются.
  • Переключатель SendRawData, которое отправляет необработанные данные элемента в двоичном формате. Это полезно, когда требуется больше метаданных чем что можно извлечь из проанализированного версии элемента.

Кроме того существует возможность указать ограничения на размер и время ожидания. Полный список настраиваемых свойств см. в статье Настраиваемая обработка содержимого с помощью выноски веб-службы обогащения содержимого .

Предварительные требования для использования выноски веб-службы обогащения содержимого для SharePoint

Для выполнения этой инструкции, необходимо установить следующие компоненты в среде разработки:

  • Поиск в SharePoint
  • Visual Studio 2010 или аналогичную .NET Framework - средство совместимые разработки
  • Права администратора при установке SharePoint
  • Сервер, на котором вы можете размещать службы с помощью служб IIS

Также необходимо знать, как создать сайт в службах IIS и развертывание службы

Настройка проекта службы повышения качества контента

На этом этапе будет создать проект реализации службы и добавьте необходимые ссылки в проект.

Создание проекта для повышения качества контента службы

  1. В Visual Studio в строке меню щелкните файл, Создать, проект.
  2. В окне типы проектов в разделе Visual C# выберите WCF.
  3. В области Шаблоны выберите Приложение-службу WCF. В поле имя введите ContentProcessingEnrichmentService и затем нажмите кнопку ОК.
  4. Удалите автоматически созданный Service1 класс и Service1 интерфейс.

Добавление ссылок в проект службы повышения качества контента

  1. В меню Проект выберите пункт Добавить ссылку.

  2. Нажмите кнопку Обзор и найдите сборку Microsoft.Office.Server.Search.ContentProcessingEnrichment в папке установки SharePoint в разделе Путь установки\Серверы Microsoft Office\15.0\Search\Applications\External.

    Примечание.

    [!Примечание] Если на компьютере, используемом для разработки компьютере установлена служба SharePoint, скопируйте сборку на компьютере для разработки и ссылаться на нее из.

Создание службы повышения качества контента

Обработка службы повышения качества контента должна реализовать интерфейс IContentProcessingEnrichmentService из пространства имен Microsoft.Office.Server.Search.ContentProcessingEnrichment . В примере кода в этом разделе представлена базовая реализацию этого интерфейса.

Реализация требует наличия двух управляемых свойств для каждого элемента, получаемые с помощью внешних веб-службы: Author и Filename. Author — это список объектов String и Filename — это объект String.

Реализация IContentProcessingEnrichmentService записывает необработанные двоичные данные во временной папке на диске с Filename в качестве имени файла. Затем новое имя добавлено в список авторов и возвращается к компоненту обработки контента.

Примечание.

Если источник данных для обхода является внешним источником данных, свойство ItemRawData не будет содержать поток данных, но будет иметь значение NULL. Строковое представление необработанных данных будет возвращено в свойстве Item.Body. Это ограничение для обходчика источника данных BCS.

Чтобы создать файл класса для повышения качества контента службы

  1. В меню ПРОЕКТ выберите пункт Добавить новый элемент.
  2. В разделе Visual C# в разделе Установленные шаблоны выберите строку Web и выберите Службы WCF.
  3. Введите ContentProcessingEnrichmentService.svc и нажмите кнопку Добавить.
  4. Удаление интерфейса IContentProcessingEnrichmentService.cs, которая создается.

Изменение кода по умолчанию в классе ContentProcessingEnrichmentService

  1. Замените существующий директивы using следующие директивы using в начале класса.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using Microsoft.Office.Server.Search.ContentProcessingEnrichment;
    using Microsoft.Office.Server.Search.ContentProcessingEnrichment.PropertyTypes;
    
  2. Метод DoWork DELETE.

Чтобы реализовать метод интерфейса IContentProcessingEnrichmentService

  1. Добавьте следующий код внутри класса, чтобы определить необходимые константы и его элементы.

    // 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. Добавьте следующий код для объявления метода 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. Изменение web.config принимать сообщения до 8 МБ и настройка readerQuotas до такой степени, значением.

  4. Добавьте в .<system.serviceModel>

    <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>
    

Выполните построение проекта и его развертывание на свой сайт служб IIS.

Настройка SharePoint

Откройте Командная консоль SharePoint и введите следующую последовательность Windows PowerShell командлетов.

$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

Последовательность командлетов Windows PowerShell помогает сначала создать объект конфигурации с помощью командлета New-SPEnterpriseSearchContentEnrichmentConfiguration. Объект конфигурации нажмите указывает к реализации службы; Рекомендуется используйте http://localhost:808 для Site_URL.

Управляемые свойства Author и Filename, передаются в службе для каждого элемента, который обрабатывается. Кроме того Проинформируйте клиента веб-службы, что службы будут выведены управляемое свойство Author. В дополнительных управляемых свойств клиента веб-службы настроена для отправки необработанные данные элемента с ограничением на размер данных. Наконец, для хранения всей конфигурации используется командлет Set-SPEnterpriseSearchContentEnrichmentConfiguration. После этот командлет возвращает, конфигурации активен, и компонент обхода контента с помощью этой конфигурации его следующий процесс обхода контента.

После завершения этой работы, можно начать полный обход контента сайта. Если служба работает правильно, можно отслеживать временная папка на сервере, где размещается сайт для документы, написанные на диске.

Можно удалить конфигурацию более поздней версии с помощью следующего командлета Windows PowerShell.

Remove-SPEnterpriseSearchContentEnrichmentConfiguration -SearchApplication $ssa

См. также