Procédure : configurer par programme une planification d'analyse pour une source de contenu
Dans Recherche de contenu d'entreprise dans Microsoft Office SharePoint Server 2007, vous indiquez quel contenu doit être analysé par le service d'indexation de recherche par le biais des sources de contenu configurées pour le fournisseur de services partagés (SSP) du service de recherche. Vous pouvez ajouter de nouvelles sources de contenu à une collection de sources de contenu d'un SSP en utilisant le modèle objet d'administration d'Recherche de contenu d'entreprise. Pour plus d'informations, voir Procédure : ajouter une source de contenu.
L'ajout d'une source de contenu pour votre contenu n'est qu'une partie de la tâche. Pour que du contenu soit ajouté à l'index de contenu, le composant d'index de contenu doit aussi analyser le contenu.
Vous pouvez lancer manuellement une analyse intégrale ou incrémentielle d'une source de contenu, ainsi que suspendre, reprendre ou arrêter l'analyse, en appelant les méthodes appropriées de la classe ContenSource. Pour plus d'informations, voir Procédure : gérer l'analyse d'une source de contenu par programme.
Toutefois, si vous souhaitez que le contenu d'une source de contenu soit analysé sur une base régulière, nous vous recommandons de configurer une planification d'analyse. Vous pouvez également le faire à l'aide du Recherche de contenu d'entreprise.
La procédure suivante indique comment procéder pour :
Configurer une application console pour utiliser le modèle objet d'administration Recherche de contenu d'entreprise.
Configurer une planification d'analyse complète pour une source de contenu, à l'aide de la classe WeeklySchedule.
Configurer une planification d'analyse incrémentielle pour une source de contenu, à l'aide de la classe DailySchedule.
Configurer votre application pour qu'elle utilise le modèle objet d'administration de la recherche de contenu d'entreprise
Définissez des références dans votre application pour les DLL suivantes :
Microsoft.SharePoint.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.Search.dll
Dans le fichier de classe de votre application console, ajoutez les instructions using suivantes dans la partie supérieure du code avec les autres directives d'espace de noms :
using Microsoft.SharePoint; using Microsoft.Office.Server.Search.Administration;
Créez une fonction pour écrire des informations d'utilisation dans la fenêtre de console.
private static void Usage() { Console.WriteLine("Manage Content Source Crawl Status"); Console.WriteLine("Usage: ManageCrawlStatus.exe <ContentSource>"); Console.WriteLine("<ContentSourceName> - Specify the content source name."); }
Dans la fonction Main() de l'application console, ajoutez du code pour vérifier le nombre d'éléments dans le paramètre args[] ;s'il est inférieur à 1, ce qui signifie qu'aucune valeur n'a été spécifiée pour identifier la source de contenu, appelez la fonction Usage() définie à l'étape 3.
if (args.Length < 1 ) { Usage(); return; }
Après le code de l'étape 4, ajoutez ce qui suit pour extraire le contexte de recherche pour le SSP.
/* 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); }
Créer une planification d'analyse à l'aide de la classe DailySchedule
Créez une instance de la classe DailySchedule.
DailySchedule daily = new DailySchedule(context);
Pour indiquer quand démarrer l'analyse de la source de contenu et à quelle fréquence procéder à l'analyse, configurez les propriétés DailySchedule. Par exemple :
//Indicates the schedule starts on the 15th day of the month. daily.BeginDay = 15; //Indicates the schedule starts in January. daily.BeginMonth = 1; //Indicates that the schedule starts in 2007. daily.BeginYear = 2007; //The next two lines of code indicate that the schedule starts at 2:30 in the morning. daily.StartHour = 2; daily.StartMinute = 30; //Indicates that the content should be crawled every day. daily.DaysInterval = 1;
Extrayez la collection de sources de contenu configurées pour le service de recherche du fournisseur de services partagés (SSP).
Content sspContent = new Content(context); ContentSourceCollection sspContentSources = sspContent.ContentSources;
Créer une planification d'analyse à l'aide de la classe WeeklySchedule
Créez une instance de la classe WeeklySchedule.
WeeklySchedule weekly= new WeeklySchedule(context);
Pour indiquer quand démarrer l'analyse de la source de contenu et à quelle fréquence procéder à l'analyse, configurez les propriétés WeeklySchedule. Par exemple :
//Indicates the schedule starts on the 1st day of the month. weekly.BeginDay = 1; //Indicates the schedule starts in January. weekly.BeginMonth = 1; //Indicates that the schedule starts in 2007. weekly.BeginYear = 2007; //The next two lines of code indicate that the schedule starts at 11:15 at night. weekly.StartHour = 23; weekly.StartMinute = 15; //Indicates that the content should be crawled every week. weekly.WeeksInterval = 1;
Configurer la source de contenu pour utiliser les nouvelles planifications
Récupérez la valeur spécifiée dans le paramètre args[0] et vérifiez que la collection de sources de contenu du fournisseur de services partagés contient une source de contenu portant ce nom.
string strContentSourceName = args[0]; if(sspContentSources.Exists(strContentSourceName) ) { <…> } else { Console.WriteLine("Content source does not exist."); }
Récupérez la source de contenu portant le nom spécifié et attribuez aux propriétés FullCrawlSchedule et IncrementalCrawlSchedule les nouvelles planifications.
ContentSource cs = sspContentSources[strContentSourceName]; cs.IncrementalCrawlSchedule = daily; cs.FullCrawlSchedule = weekly; cs.Update();
Exemple
Voici le code complet de l'exemple application console décrite dans cette rubrique.
Conditions préalables requises
- Vérifiez qu'un fournisseur de services partagés est déjà créé.
Références de projet
Ajoutez les références de projet suivantes dans votre projet de code d'application console avant d'exécuter cet exemple :
Microsoft.SharePoint
Microsoft.Office.Server
Microsoft.Office.Server.Search
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.Office.Server.Search.Administration;
namespace ManageCrawlStatus
{
class Program
{
static void Main(string[] args)
{
try
{
if (args.Length < 1)
{
Usage();
return;
}
/*
Replace <SiteName> with the name of a site using the Shared Services Provider
*/
string strURL = "http://<SiteName>";
SearchContext context;
using (SPSite site = new SPSite(strURL))
{
Context = SearchContext.GetContext(site);
}
DailySchedule daily = new DailySchedule(context);
//Indicates the schedule starts on the 15th day of the month.
daily.BeginDay = 15;
//Indicates the schedule starts in January.
daily.BeginMonth = 1;
//Indicates that the schedule starts in 2007.
daily.BeginYear = 2007;
//The next two lines of code indicate that the schedule starts at 2:30 in the morning.
daily.StartHour = 2;
daily.StartMinute = 30;
//Indicates that the content should be crawled every day.
daily.DaysInterval = 1;
WeeklySchedule weekly = new WeeklySchedule(context);
//Indicates the schedule starts on the 1st day of the month.
weekly.BeginDay = 1;
//Indicates the schedule starts in January.
weekly.BeginMonth = 1;
//Indicates that the schedule starts in 2007.
weekly.BeginYear = 2007;
//The next two lines of code indicate that the schedule starts at 11:15 at night.
weekly.StartHour = 23;
weekly.StartMinute = 15;
//Indicates that the content should be crawled every week.
weekly.WeeksInterval = 1;
string strContentSourceName = args[0];
Content sspContent = new Content(context);
ContentSourceCollection sspContentSources = sspContent.ContentSources;
if (sspContentSources.Exists(strContentSourceName))
{
ContentSource cs = sspContentSources[strContentSourceName];
cs.IncrementalCrawlSchedule = daily;
cs.FullCrawlSchedule = weekly;
cs.Update();
}
else
{
Console.WriteLine("Content source does not exist.");
}
}
catch (Exception e)
{
e.ToString();
}
}
private static void Usage()
{
Console.WriteLine("Configure Crawl Schedule");
Console.WriteLine("Usage: ConfigureCrawlSchedule.exe <ContentSourceName>");
Console.WriteLine("<ContentSourceName> - Specify the content source name.");
}
}
}
Voir aussi
Autres ressources
Procédure : renvoyer le contexte de recherche pour le fournisseur du service de recherche
Vue d'ensemble des sources de contenu
Procédure : récupérer les sources de contenus pour un fournisseur de services partagés
Procédure : ajouter une source de contenu
Procédure : supprimer une source de contenu
Procédure : gérer l'analyse d'une source de contenu par programme