Partager via


Procédure : exporter par programme l'historique d'analyse dans un fichier CSV

Recherche de contenu d'entreprise dans Microsoft Office SharePoint Server 2007 suit les statistiques d'analyse, entre autres :

  • Type d'analyse (complète ou incrémentielle)

  • Heure de début et de fin de l'analyse

  • Source de contenu associé à l'analyse

  • Nombre d'éléments analysés sans problème et nombre d'avertissements et d'erreurs

Vous pouvez utiliser le modèle objet Administration de la recherche pour récupérer ces informations à l'aide de la classe Microsoft.Office.Server.Search.Administration.CrawlHistory. Celle-ci contient la fonction GetCrawlHistory qui renvoie les statistiques d'analyse dans un objet DataTable.

La procédure suivante indique comment écrire le contenu de la table d'historique d'analyse dans un fichier de valeurs séparées par une virgule (.csv). Vous pouvez ensuite ouvrir ce fichier dans une application telle que Microsoft Office Excel afin d'approfondir l'analyse.

Exporter l'historique d'analyse dans un fichier .csv à partir d'une application de console

  1. Dans Microsoft Visual Studio, dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.

  2. Dans Types de projets, sous C#, cliquez sur Windows.

  3. Sous Modèles, cliquez sur Application de console. Dans le champ Nom, tapez CrawlHistorySample, puis cliquez sur OK.

  4. Dans le menu Projet, cliquez sur Ajouter une référence.

  5. Dans l'onglet .NET, sélectionnez la référence suivante, puis cliquez sur OK :

    • Composant Microsoft Search (Microsoft.Office.Server.Search.dll) ;

    • Composant Microsoft Office Server (Microsoft.Office.Server.dll)

    • Windows SharePoint Services (Microsoft.SharePoint.dll).

  6. Dans le fichier de classe de l'application de console, ajoutez les instructions using suivantes au début du code avec les autres directives d'espaces de noms.

    using System.IO;
    using System.Data;
    using Microsoft.SharePoint;
    using Microsoft.Office.Server.Search.Administration;
    
  7. Créez une fonction qui écrit les informations d'utilisation dans la fenêtre de console.

    static void Usage()
    {
       Console.WriteLine("Export Crawl History to CSV File Sample");
       Console.WriteLine("Usage: CrawlHistorySample.exe SiteURL OutputPath OutputName");
       Console.WriteLine(@"Example: CrawlHistorySample.exe http://MySearchServer c:\logfiles\ CrawlHistoryLog1");
    }
    
  8. Dans la fonction Main de l'application de console, ajoutez le code suivant pour ouvrir un bloc try.

    try
    {
    
  9. Ajoutez le code qui vérifie le nombre d'éléments dans le paramètre args[] ; ce nombre doit être égal à 3. Si ce n'est pas le cas, appelez la fonction Usage définie à l'étape 7.

    if (args.Length != 3)
    {
       Usage();
       return;
    }
    
  10. Récupérez les valeurs spécifiés dans le paramètre args[], à utiliser pour spécifier l'URL du site Centre de Recherche, le chemin de sortie et le nom du fichier .csv.

    string strURL = args[0];
    string csvPath = args[1] + "\\" + args[2] + ".csv";
    
  11. Ajoutez le code suivant pour récupérer la méthode SearchContext :

    SearchContext context;
    using (SPSite site = new SPSite(strURL))
    {
       context = SearchContext.GetContext(site);
    }
    
  12. Récupérez l'historique d'analyse dans un objet DataTableT:System.Data.DataTable en utilisant le code suivant.

    CrawlHistory history = new CrawlHistory(context);
    DataTable table = new DataTable();
    table = history.GetCrawlHistory();
    
  13. Ajoutez le code suivant pour initialiser l'objet StreamWriterT:System.IO.StreamWriter.

    using (StreamWriter writer = new StreamWriter(csvPath)) 
    {
    /*
    Code to iterate through DataTable rows, and write
    out the values to the .csv file
    See steps 14 through 17.
    */
    
  14. Récupérez le nombre de colonnes ; procédez comme suit.

    int colCount = table.Columns.Count;
    
  15. Écrivez les noms de colonnes dans le flux du fichier, avec une virgule après chaque nom, à l'exception du nom de la dernière colonne ; écrivez ensuite une nouvelle ligne dans le flux du fichier. Procédez comme suit.

    for (int i = 0; i < colCount; i++)
    {
       writer.Write(table.Columns[i].ToString());
       if (i < colCount - 1)
       {
          writer.Write(",");
       }
    }
    writer.Write(writer.NewLine);
    
  16. Parcourez l'ensemble des lignes et écrivez chaque valeur de colonne dans le flux du fichier, avec une virgule après chaque valeur. Écrivez une nouvelle ligne dans le flux du fichier à la fin de la ligne avant de passer à la ligne suivante.

    foreach (DataRow row in table.Rows)
    {
       for (int i = 0; i < colCount; i++)
       {
          writer.Write(row[i].ToString());
          if (i < colCount - 1)
          {
             writer.Write(",");
          }
       }
       writer.Write(writer.NewLine);
    }
    
  17. Videz le contenu du flux du fichier, fermez-le et fermez le bloc d'instructions using et le bloc try. Procédez comme suit.

          writer.Flush();
          writer.Close();
       }
    }
    
  18. Ajoutez le code suivant pour le bloc catch.

    catch (Exception ex)
    {
       Console.WriteLine(ex.ToString());
       Usage();
    }
    

Exemple

Voici le code complet de la classe d'application de console CrawlHistorySample décrite dans cette rubrique.

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;

namespace CrawlHistorySample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                if (args.Length != 3)
                {
                    Usage();
                    return;
                }
                string strURL = args[0];
                string csvPath = args[1] + "\\" + args[2] + ".csv";

                SearchContext context;
                using (SPSite site = new SPSite(strURL))
                {
                    context = SearchContext.GetContext(site);
                }
                CrawlHistory history = new CrawlHistory(context);
                DataTable table = new DataTable();
                table = history.GetCrawlHistory();

                using (StreamWriter writer = new StreamWriter(csvPath, false))
                {
                    int colCount = table.Columns.Count;
                    for (int i = 0; i < colCount; i++)
                    {
                        writer.Write(table.Columns[i].ToString());
                        if (i < colCount - 1)
                        {
                            writer.Write(",");
                        }
                    }
                    writer.Write(writer.NewLine);
                    foreach (DataRow row in table.Rows)
                    {
                        for (int i = 0; i < colCount; i++)
                        {
                            writer.Write(row[i].ToString());
                            if (i < colCount - 1)
                            {
                                writer.Write(",");
                            }
                        }
                        writer.Write(writer.NewLine);
                    }
                    writer.Flush();
                    writer.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Usage();
            }
        }

        static void Usage()
        {
            Console.WriteLine("Export Crawl History to CSV File Sample");
            Console.WriteLine("Usage: CrawlHistorySample.exe SiteURL OutputPath OutputName");
            Console.WriteLine(@"Example: CrawlHistorySample.exe http://MySearchServer c:\logfiles\ CrawlHistoryLog1");
        }
    }
}

Voir aussi

Autres ressources

Mise en route avec le modèle objet Administration de recherche de contenu d'entreprise
Procédure : renvoyer le contexte de recherche pour le fournisseur du service de recherche