Partager via


Utiliser la légende du service web Enrichissement de contenu pour SharePoint Server

Découvrez comment implémenter le service Web enrichissement de contenu dans SharePoint pour modifier les propriétés gérées des éléments analysés avant qu’ils ne soient indexés.

La recherche dans SharePoint permet aux développeurs d’ajouter une étape personnalisée au traitement du contenu pour modifier les propriétés gérées des éléments analysés avant qu’ils ne soient indexés. Cette étape personnalisée requiert l'implémentation d'un service web externe--le service web de l'enrichissement de contenu--que vous pouvez enrichir les propriétés gérées d'éléments en cours de traitement ; puis en configurant le système pour appeler ce service web externe.

L’implémentation du service web d’enrichissement de contenu externe s’appuie sur des interfaces sous l’espace de noms Microsoft.Office.Server.Search.ContentProcessingEnrichment .

Applets de commande Windows PowerShell à utiliser avec le service web de l'enrichissement de contenu

La fonctionnalité de l'enrichissement de contenu est configurée et activée avec les applets de commande Windows PowerShell suivantes :

Ces applets de commande Windows PowerShell permettant à un administrateur de configurer les éléments suivants :

  • Un jeu de propriétés gérées à envoyer au service web externe personnalisé.
  • Un jeu de propriétés gérées pour être renvoyé par le service web externe personnalisé.
  • Une condition de trigger, qui représente un prédicat à exécuter pour chaque élément en cours de traitement. Si une condition de trigger est utilisée, le service web externe est appelé uniquement lorsque le déclencheur renvoie la valeur true. Si aucune condition de déclencheur n'est utilisée, tous les éléments sont envoyées au service web externe.
  • Un FailureMode qui permet au service web soit échouer les éléments qui ne peuvent pas être traités au cours de l'étape de l'enrichissement de contenu ou transmettre ces éléments par le biais de sans aucune modification. Si les éléments sont a échoué, ils ne sont pas indexés et un avertissement est écrit dans le journal du service ULS.
  • Un DebugMode, qui permet de prototypage rapide du service web externe. Lorsqu'il est activé, le service web externe reçoit toutes les propriétés gérées disponibles. Dans DebugMode, la condition de déclencheur est ignorée et aucune sortie de propriétés gérées par le service web sont également ignorées.
  • Commutateur SendRawData qui envoie les données brutes d'un élément au format binaire. Cela est utile lorsque plus de métadonnées est nécessaire que ce qui peut être récupéré à partir de la version analysée de l'élément.

In addition, there are options for specifying size limits and timeouts. Pour obtenir la liste complète des propriétés configurables, consultez Traitement du contenu avec la légende du service web Enrichissement de contenu.

Conditions préalables à l’utilisation de la légende du service web d’enrichissement de contenu pour SharePoint

Pour effectuer cette procédure, vous devez disposer les logiciels suivants sont installés dans votre environnement de développement :

  • Recherche dans SharePoint
  • Visual Studio 2010 ou similaire .NET Framework - outil de développement compatible
  • Privilèges d’administrateur sur votre installation SharePoint
  • Un serveur sur lequel vous pouvez héberger le service avec IIS

Vous devez connaître également comment créer un site dans IIS et de déployer un service lui

Configurer un projet de service de l'enrichissement de contenu

Dans cette étape, vous créez le projet d'implémentation de service et ensuite ajouter les références requises pour le projet.

Pour créer le projet pour un service de l'enrichissement de contenu

  1. Dans Visual Studio, dans la barre de menus, choisissez fichier, Nouveau, projet.
  2. Dans types de projets, sous Visual c#, choisissez WCF.
  3. Sous modèles, choisissez Application de Service WCF. Dans le champ nom, tapez ContentProcessingEnrichmentService, puis cliquez sur le bouton OK.
  4. Supprimer l'interface de classe et Service1 générée automatiquement Service1.

Pour ajouter des références au projet de service de l'enrichissement de contenu

  1. Dans le menu Projet, choisissez Ajouter une référence.

  2. Choisissez Parcourir et recherchez l’assembly Microsoft.Office.Server.Search.ContentProcessingEnrichment dans votre dossier d’installation SharePoint sous Chemin d’installation\Microsoft Office Servers\15.0\Search\Applications\External.

    Remarque

    [!REMARQUE] Si SharePoint est installé sur un ordinateur autre que votre ordinateur de développement, copier l'assembly sur votre ordinateur de développement et de faire référence à partir de là.

Créer un service de l'enrichissement de contenu

Votre service de l'enrichissement de traitement de contenu doit implémenter l'interface IContentProcessingEnrichmentService à partir de l'espace de noms Microsoft.Office.Server.Search.ContentProcessingEnrichment . L'exemple de code dans cette section est une implémentation de base de cette interface.

La mise en œuvre requiert deux propriétés gérées pour chaque élément reçu par le service web externe : Author et Filename. Le Author est une liste d'objets de String et le Filename est un objet String.

L'implémentation de IContentProcessingEnrichmentService écrit les données binaires brutes dans un emplacement temporaire sur le disque, avec Filename comme nom du fichier. Ensuite, un nouveau nom est ajouté à la liste des auteurs et renvoyé au composant de traitement de contenu.

Remarque

Si la source de données de l’analyse est une source de données externe, la propriété ItemRawData n’aura pas de flux de données, mais aura la valeur Null. La représentation sous forme de chaîne des données brutes est retournée dans la propriété Item.Body. Il s’agit d’une limitation du robot de source de données BCS.

Pour créer le fichier de classe pour le service de l'enrichissement de contenu

  1. Dans le menu PROJET, choisissez Ajouter un nouvel élément.
  2. Sous Visual c# dans les Modèles installés, sélectionnez Web, puis Service WCF.
  3. Tapez ContentProcessingEnrichmentService.svc, puis cliquez sur Ajouter.
  4. Supprimer l'interface IContentProcessingEnrichmentService.cs qui est créé.

Pour modifier le code par défaut dans la classe ContentProcessingEnrichmentService

  1. Remplacez les directives using existantes par les directives using suivantes au début de la classe.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using Microsoft.Office.Server.Search.ContentProcessingEnrichment;
    using Microsoft.Office.Server.Search.ContentProcessingEnrichment.PropertyTypes;
    
  2. Supprimez la méthode DoWork.

Pour implémenter la méthode d'interface IContentProcessingEnrichmentService

  1. Ajoutez le code suivant à l'intérieur de la classe pour définir les constantes requis et les membres.

    // 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. Ajoutez le code suivant pour la méthode 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. Modifier web.config pour accepter des messages jusqu'à 8 Mo et configurer readerQuotas pour qu'il soit une valeur suffisamment importante.

  4. Ajoutez ce qui suit à l’intérieur de <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>
    

Générez le projet et déployez-le sur votre site IIS.

Configurer SharePoint

Ouvrez la SharePoint Management Shell et entrez la séquence suivante d'applets de commande 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

La séquence d’applets de commande Windows PowerShell vous aide à créer d’abord un objet de configuration à l’aide de l’applet de commande New-SPEnterpriseSearchContentEnrichmentConfiguration. L'objet de configuration pointe vers votre implémentation de service ; meilleure pratique, utilisez http://localhost:808 pour Site_URL.

Les propriétés gérées Author et Filename sont envoyés à votre service pour chaque élément qui est en cours de traitement. En outre, vous avez informé le client de service web du service de sortie une seule propriété gérée, Author. Dans supplémentaires sur les propriétés gérées, le client de service web est configuré pour envoyer des données brutes de l'élément avec une limite la taille des données. Enfin, l’applet de commande Set-SPEnterpriseSearchContentEnrichmentConfigurationest utilisée pour stocker la configuration entière. Une fois cette applet de commande renvoie, la configuration est active et le composant d'analyse utilise cette configuration de son prochain processus d'analyse.

Une fois cette opération terminée, vous pouvez démarrer une analyse complète de votre site. Si le service fonctionne correctement, vous pourrez surveiller le dossier temporaire sur le serveur qui héberge votre site pour les documents écrits sur le disque.

Vous pouvez supprimer la configuration ultérieurement à l'aide de l'applet de commande suivante Windows PowerShell.

Remove-SPEnterpriseSearchContentEnrichmentConfiguration -SearchApplication $ssa

Voir aussi