Share via


Architecture d’interrogation de la recherche de contenu d’entreprise

Dernière modification : vendredi 16 avril 2010

S’applique à : SharePoint Server 2010

  • Modèle objet de recherche fédérée
    Avec le modèle objet de recherche fédérée, vous pouvez réunir les résultats de plusieurs moteurs de recherche ou référentiels. Le modèle objet de recherche fédérée vous permet d’interroger Recherche SharePoint Server, FAST Search Server 2010 for SharePoint, des emplacements OpenSearch et des runtimes personnalisés. Les composants WebPart de résultats de la recherche dans Recherche de contenu d’entreprise SharePoint sont basés sur le modèle objet de recherche fédérée.

  • Modèle objet de requête
    Dans Recherche de contenu d’entreprise dans Microsoft Office SharePoint Server 2007, vous avez utilisé le modèle objet de requête pour créer des composants WebPart de recherche personnalisée et des applications de recherche. SharePoint Server 2010 fournit une version mise à jour de ce modèle objet. Vous pouvez utiliser le modèle objet de requête pour interroger Recherche SharePoint Server et FAST Search Server 2010 for SharePoint. Lorsque vous renvoyez des résultats de Recherche SharePoint Server et FAST Search Server 2010 for SharePoint via le modèle objet de recherche fédérée, le modèle objet de requête est en fait appelé à partir du modèle objet de recherche fédérée.

Utilisation du modèle objet de recherche fédérée

Le modèle objet de recherche fédérée est implémenté dans l’espace de noms Microsoft.Office.Server.Search.Query, qui se trouve dans Microsoft.Office.Server.Search.dll. Vous devez définir des références aux DLL suivantes pour accéder au modèle objet de recherche fédérée :

  • Microsoft.Office.Server.dll

  • Microsoft.Office.Server.Search.dll

  • Microsoft.SharePoint.dll

Plusieurs classes fournissent la fonctionnalité du modèle objet. Ces classes sont décrites dans les sections suivantes.

QueryManager

La classe QueryManager représente le point d’entrée par lequel vous accédez aux autres classes du modèle objet de recherche fédérée. Cette classe envoie la demande de requête et renvoie les résultats. Vous pouvez également modifier la requête de cette classe avant son envoi.

LocationList

La classe LocationList contient une liste des emplacements fédérés. Elle est chargée d’agréger et de renvoyer les résultats d’un emplacement.

Location

La classe Location représente un emplacement fédéré dans le modèle objet.

ILocationRuntime

Vous devez utiliser l’interface ILocationRuntime pour fournir une implémentation d’un fournisseur personnalisé.

Renvoi des résultats de la recherche

Les résultats sont renvoyés au format XML. L’exemple de code suivant montre comment utiliser le modèle objet de recherche fédérée pour renvoyer les résultats de la recherche :

    long lastupdate;
    bool crawl;
    SearchServiceApplicationProxy proxy =
(SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.GetContext(SPContext.Current.Site));
    LocationConfiguration[] locationConfigs;
    LocationConfiguration locationConfig = null;
    locationConfigs = proxy.GetLocationConfigurations(out lastupdate, out crawl);
    Location location;
    LocationList locationList = new LocationList();
    QueryManager queryManager = new QueryManager();
    foreach (LocationConfiguration locConfig in locationConfigs)
    {
        if (locConfig.InternalName.Equals("LocalSearchIndex"))
        {
            locationConfig = locConfig;
        break;
        }
    }
    location = new Location(locationConfig.InternalName, proxy);
    location.UserQuery = queryText;
    locationList.Add(location);
    queryManager.Add(locationList);
    queryManager.IsTriggered(locationList);
    XmlDocument xDoc = queryManager.GetResults(locationList);

Pour une procédure complète et pas à pas relative à cet exemple de code, voir Procédure pas à pas : création d’un composant Web Part de recherche de base à l’aide du modèle objet de fédération.

Utilisation du modèle objet de requête

Le modèle objet de requête est implémenté dans l’espace de noms Microsoft.Office.Server.Search.Query, qui se trouve dans Microsoft.Office.Server.Search.dll. Vous devez définir des références aux DLL suivantes pour accéder au modèle objet de requête :

  • Microsoft.Office.Server.dll

  • Microsoft.Office.Server.Search.dll

  • Microsoft.SharePoint.dll

À propos des classes du modèle objet de requête

L’espace de noms Microsoft.Office.Server.Search.Query comprend trois classes de requête :

  • Query : cette classe n’est pas destinée à être utilisée directement à partir de votre code, elle représente l’implémentation de base des classes du modèle objet de requête. Dans votre code, utilisez les classes FullTextSqlQuery et KeywordQuery.

  • FullTextSqlQuery : utilisez cette classe pour exécuter des requêtes de recherche à l’aide de la syntaxe SQL.

  • QueryKeywordQuery : utilisez cette classe pour exécuter des requêtes de recherche à l’aide de la syntaxe de mot clé.

SearchServiceApplicationProxy proxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.GetContext(SPContext.Current.Site));
KeywordQuery query = new KeywordQuery(proxy);
query.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default;
query.QueryText = queryText;
query.ResultTypes |= ResultType.RelevantResults;
ResultTableCollection searchResults = query.Execute();
if (searchResults.Exists(ResultType.RelevantResults))
{
    ResultTable searchResult = searchResults[ResultType.RelevantResults];
    DataTable result = new DataTable();
    result.TableName = "Result";
    result.Load(searchResult, LoadOption.OverwriteChanges);
}

L’exemple de code suivant montre comment utiliser le modèle objet de requête pour renvoyer les résultats de la recherche :

Pour une procédure pas à pas complète de cet exemple de code, voir Procédure pas à pas : création d’un composant WebPart de base à l’aide du modèle objet de requête.