Freigeben über


Abfragearchitektur der Unternehmenssuche

Letzte Änderung: Freitag, 16. April 2010

Gilt für: SharePoint Server 2010

  • Objektmodell für die Sammelsuche
    Mit dem Objektmodell für die Sammelsuche können Sie Ergebnisse aus mehreren Suchmodulen oder Repositorys zusammenführen. Sie können das Objektmodell für die Sammelsuche verwenden, um Abfragen für SharePoint Server-Suche, FAST Search Server 2010 for SharePoint, OpenSearch-Speicherorte und benutzerdefinierte Laufzeiten auszuführen. Die Suchergebnis-Webparts in der SharePoint-Unternehmenssuche basieren auf dem Objektmodell für die Sammelsuche.

  • Abfrageobjektmodell
    In der Suche in Unternehmen mit Microsoft Office SharePoint Server 2007 haben Sie das Abfrageobjektmodell verwendet, um benutzerdefinierte Such-Webparts und Suchanwendungen zu erstellen. SharePoint Server 2010 enthält eine aktualisierte Version dieses Objektmodells. Sie können das Abfrageobjektmodell verwenden, um Abfragen für die SharePoint Server-Suche und FAST Search Server 2010 for SharePoint auszuführen. Wenn Sie Ergebnisse aus der SharePoint Server-Suche und aus FAST Search Server 2010 for SharePoint mithilfe des Objektmodells für die Sammelsuche zurückgeben, wird tatsächlich das Abfrageobjektmodell über das Objektmodell für die Sammelsuche aufgerufen.

Verwenden des Objektmodells für die Sammelsuche

Das Objektmodell für die Sammelsuche ist im Microsoft.Office.Server.Search.Query-Namespace in Microsoft.Office.Server.Search.dll implementiert. Sie müssen Verweise auf die folgenden DLLs festlegen, um auf das Objektmodell für die Sammelsuche zuzugreifen:

  • Microsoft.Office.Server.dll

  • Microsoft.Office.Server.Search.dll

  • Microsoft.SharePoint.dll

Die Funktionalität des Objektmodells wird durch verschiedene Klassen bereitgestellt. Diese Klassen werden in den folgenden Abschnitten beschrieben.

QueryManager

Die QueryManager-Klasse ist der Einstiegspunkt, über den Sie auf die anderen Klassen des Objektmodells für die Sammelsuche zugreifen. Von dieser Klasse werden die Abfrageanforderungen übermittelt und die Ergebnisse zurückgegeben. Außerdem können Sie über diese Klasse die Abfrage vor der Übermittlung ändern.

LocationList

Die LocationList-Klasse enthält eine Liste von Verbundspeicherorten und wird zum Aggregieren der Ergebnisse aus einem Speicherort und zum Zurückgeben dieser Ergebnisse verwendet.

Location

Die Location-Klasse stellt einen Verbundspeicherort im Objektmodell dar.

ILocationRuntime

Sie verwenden die ILocationRuntime-Schnittstelle, wenn Sie eine Implementierung für einen benutzerdefinierten Anbieter bereitstellen müssen.

Zurückgeben von Suchergebnissen

Die Ergebnisse werden als XML zurückgegeben. Im folgenden Codebeispiel wird gezeigt, wie Sie das Objektmodell für die Sammelsuche verwenden, um Suchergebnisse zurückzugeben:

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

Eine vollständige exemplarische Vorgehensweise für diesen Beispielcode finden Sie unter Exemplarische Vorgehensweise: Erstellen eines einfachen Such-Webparts mithilfe des Federation-Objektmodells.

Verwenden des Abfrageobjektmodells

Das Abfrageobjektmodell ist im Microsoft.Office.Server.Search.Query-Namespace in Microsoft.Office.Server.Search.dll implementiert. Sie müssen Verweise auf die folgenden DLLs festlegen, um auf das Abfrageobjektmodell zuzugreifen:

  • Microsoft.Office.Server.dll

  • Microsoft.Office.Server.Search.dll

  • Microsoft.SharePoint.dll

Informationen zu den Klassen des Abfrageobjektmodells

Der Microsoft.Office.Server.Search.Query-Namespace enthält drei Abfrageklassen:

  • Query Diese Klasse ist nicht für die direkte Verwendung im Code gedacht, sondern als Basisimplementierung für die Klassen des Abfrageobjektmodells. Verwenden Sie im Code die Klassen FullTextSqlQuery und KeywordQuery.

  • FullTextSqlQuery Verwenden Sie diese Klasse, um Suchabfragen mit SQL-Syntax auszuführen.

  • QueryKeywordQuery Verwenden Sie diese Klasse, um Suchabfragen mit Schlüsselwortsyntax auszuführen.

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);
}

Im folgenden Codebeispiel wird gezeigt, wie Sie das Abfrageobjektmodell verwenden, um Suchergebnisse zurückzugeben:

Eine vollständige exemplarische Vorgehensweise für diesen Beispielcode finden Sie unter Exemplarische Vorgehensweise: Erstellen eines einfachen Webparts für Suchergebnisse mithilfe des Abfrageobjektmodells.