Arbeiten mit Suchergebnissen in Azure SearchHow to work with search results in Azure Search

Dieser Artikel enthält Anleitungen dazu, wie Standardelemente einer Seite mit Suchergebnissen implementiert werden, z.B. Gesamtanzahl, Dokumentabruf, Sortierreihenfolge und Navigation.This article provides guidance on how to implement standard elements of a search results page, such as total counts, document retrieval, sort orders, and navigation. Seitenbezogene Optionen, die Daten oder Informationen zu Ihren Suchergebnissen beitragen, werden über die Dokument durchsuchen-Anforderungen angegeben, die an den Azure Search-Dienst gesendet werden.Page-related options that contribute data or information to your search results are specified through the Search Document requests sent to your Azure Search Service.

In der REST-API enthalten Anforderungen einen GET-Befehl, Pfad- und Abfrageparameter, denen der Dienst entnimmt, was angefordert wird und wie die Antwort zu formulieren ist.In the REST API, requests include a GET command, path, and query parameters that inform the service what is being requested, and how to formulate the response. Im .NET-SDK ist die entsprechende API die DocumentSearchResult-Klasse.In the .NET SDK, the equivalent API is DocumentSearchResult Class.

Einige Codebeispiele beinhalten eine Web-Front-End-Schnittstelle, die Sie hier finden: Demo-App „New York City Jobs“ und CognitiveSearchFrontEnd.Several code samples include a web frontend interface, which you can find here: New York City Jobs demo app and CognitiveSearchFrontEnd.

Hinweis

Eine gültige Anforderung umfasst eine Reihe von Elementen, z. B. Dienst-URL und Pfad, HTTP-Verb, api-version und so weiter.A valid request includes a number of elements, such as a service URL and path, HTTP verb, api-version, and so on. Aus Platzgründen wurden die Beispiele verkürzt, um nur die Syntax hervorzuheben, die für die Paginierung wichtig sind.For brevity, we trimmed the examples to highlight just the syntax that is relevant to pagination. Weitere Informationen zur Anforderungssyntax finden Sie unter Azure Search-Dienst-REST-API.For more information about request syntax, see Azure Search Service REST.

Gesamtanzahl der Treffer und die SeitenanzahlTotal hits and Page Counts

Grundsätzlich werden praktisch auf allen Suchseiten die Gesamtanzahl der von einer Abfrage zurückgegebenen Ergebnisse angezeigt und anschließend die Ergebnisse in kleineren Segmenten zurückgegeben.Showing the total number of results returned from a query, and then returning those results in smaller chunks, is fundamental to virtually all search pages.

In Azure Search verwenden Sie die Parameter $count, $top und $skip zur Rückgabe dieser Werte.In Azure Search, you use the $count, $top, and $skip parameters to return these values. Das folgende Beispiel enthält eine Beispielanforderung für die Gesamtanzahl der Treffer in einem Index namens „onlineCatalog“, die als @OData.count zurückgegeben wird:The following example shows a sample request for total hits on an index called "onlineCatalog", returned as @OData.count:

    GET /indexes/onlineCatalog/docs?$count=true

Dokumenten in Gruppen von jeweils 15 abrufen und ab der ersten Seite auch die Gesamtanzahl der Treffer anzeigen:Retrieve documents in groups of 15, and also show the total hits, starting at the first page:

    GET /indexes/onlineCatalog/docs?search=*$top=15&$skip=0&$count=true

Zur Paginierung der Ergebnisse sind sowohl $top als auch $skip erforderlich, wobei $top angibt, wie viele Elemente in einer Gruppe zurückgegeben werden, und $skip angibt, wie viele Elemente übersprungen werden sollen.Paginating results requires both $top and $skip, where $top specifies how many items to return in a batch, and $skip specifies how many items to skip. Im folgenden Beispiel werden auf jeder Seite jeweils die nächsten 15 Elemente angezeigt, wobei die Inkrementschritte durch den Parameter $skip angegeben werden.In the following example, each page shows the next 15 items, indicated by the incremental jumps in the $skip parameter.

    GET /indexes/onlineCatalog/docs?search=*$top=15&$skip=0&$count=true

    GET /indexes/onlineCatalog/docs?search=*$top=15&$skip=15&$count=true

    GET /indexes/onlineCatalog/docs?search=*$top=15&$skip=30&$count=true

Layout Layout

Auf einer Seite mit Suchergebnissen empfiehlt es sich, eine Miniaturansicht, eine Teilmenge von Feldern und einen Link zu einer vollständigen Produktseite anzuzeigen.On a search results page, you might want to show a thumbnail image, a subset of fields, and a link to a full product page.

In Azure Search verwenden Sie $select und einen Lookup-Befehl, um diese Umgebung zu implementieren.In Azure Search, you would use $select and a lookup command to implement this experience.

So wird eine Teilmenge von Feldern für ein gekacheltes Layout zurückzugeben:To return a subset of fields for a tiled layout:

    GET /indexes/ onlineCatalog/docs?search=*&$select=productName,imageFile,description,price,rating 

Bild- und Mediendateien können nicht direkt durchsucht werden und sollten auf einer anderen Speicherplattform gespeichert werden, z.B. Azure Blob Storage, um die Kosten zu senken.Images and media files are not directly searchable and should be stored in another storage platform, such as Azure Blob storage, to reduce costs. Definieren Sie im Index und in den Dokumenten ein Feld, das die URL-Adresse des externen Inhalts enthält.In the index and documents, define a field that stores the URL address of the external content. Sie können das Feld dann als Bildverweis verwenden.You can then use the field as an image reference. Die URL zum Bild sollte im Dokument enthalten sein.The URL to the image should be in the document.

Zum Abrufen der Seite mit einer Produktbeschreibung für ein onClick -Ereignis verwenden Sie Dokument suchen , um den Schlüssel des abzurufenden Dokuments zu übergeben.To retrieve a product description page for an onClick event, use Lookup Document to pass in the key of the document to retrieve. Der Schlüssel hat den Datentyp Edm.String.The data type of the key is Edm.String. In diesem Beispiel lautet er 246810.In this example, it is 246810.

    GET /indexes/onlineCatalog/docs/246810

Sortieren nach Relevanz, Bewertung oder PreisSort by relevance, rating, or price

Oft wird für die Sortierreihenfolge standardmäßig Relevanz festgelegt, aber es ist üblich, alternative Sortierreihenfolgen einfach zur Verfügung zu stellen, damit die Benutzer die vorhandenen Ergebnisse schnell in einer anderen Reihenfolge sortieren können.Sort orders often default to relevance, but it's common to make alternative sort orders readily available so that customers can quickly reshuffle existing results into a different rank order.

In Azure Search basiert die Sortierung auf dem $orderby-Ausdruck für alle Felder, die als "Sortable": true. indiziert werden. Eine $orderby-Klausel ist ein OData-Ausdruck.In Azure Search, sorting is based on the $orderby expression, for all fields that are indexed as "Sortable": true. An $orderby clause is an OData expression. Informationen zur Syntax finden Sie unter OData-Ausdruckssyntax für Filter und Sortierklauseln.For information about syntax, see OData expression syntax for filters and order-by clauses.

Die Relevanz ist eng mit Bewertungsprofilen verknüpft.Relevance is strongly associated with scoring profiles. Sie können die Standardbewertung verwenden, bei der die Reihenfolge der Ergebnisse anhand von Textanalyse und Statistiken festgelegt wird, wobei Dokumente mit mehr oder höheren Übereinstimmungen mit einem Suchbegriff eine höhere Punktzahl erhalten.You can use the default scoring, which relies on text analysis and statistics to rank order all results, with higher scores going to documents with more or stronger matches on a search term.

Alternative Sortierreihenfolgen werden in der Regel onClick -Ereignissen zugeordnet, die eine Methode aufrufen, welche die Sortierreihenfolge erstellt.Alternative sort orders are typically associated with onClick events that call back to a method that builds the sort order. Angenommen, das folgende Seitenelement sei gegeben:For example, given this page element:

Sie erstellen dann eine Methode, die die ausgewählten Sortieroption als Eingabe akzeptiert und eine sortierte Liste für die Kriterien zurückgibt, die mit dieser Option verknüpft sind.You would create a method that accepts the selected sort option as input, and returns an ordered list for the criteria associated with that option.

Hinweis

Die Standardbewertung ist zwar für viele Szenarien ausreichend ist, aber es wird empfohlen, stattdessen die Relevanz anhand eines benutzerdefinierten Bewertungsprofil zu ermitteln.While the default scoring is sufficient for many scenarios, we recommend basing relevance on a custom scoring profile instead. Ein benutzerdefiniertes Bewertungsprofil bietet Ihnen eine Möglichkeit, Elementen, die für Ihr Unternehmen sinnvoller sind, eine höhere Priorität zuzuordnen.A custom scoring profile gives you a way to boost items that are more beneficial to your business. Weitere Informationen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex.See Add scoring profiles for more information.

FacettennavigationFaceted navigation

Ergebnisseiten bieten üblicherweise eine Suchnavigation, die sich häufig am seitlichen oder oberen Rand der Seite befindet.Search navigation is common on a results page, often located at the side or top of a page. In Azure Search ermöglicht die Facettennavigation eine selbstgesteuerte Suche, die auf vordefinierten Filtern basiert.In Azure Search, faceted navigation provides self-directed search based on predefined filters. Nähere Informationen finden Sie unter Facettennavigation in Azure Search .See Faceted navigation in Azure Search for details.

Filter auf SeitenebeneFilters at the page level

Wenn Ihr Lösungsentwurf dedizierte Suchseiten für bestimmte Inhaltstypen enthält (z.B. eine Anwendung für den Online-Einzelhandel mit einer Liste von Abteilungen am oberen Rand der Seite), dann können Sie einen Filterausdruck zusammen mit einem onClick-Ereignis einfügen, um eine Seite in einem ungefilterten Zustand zu öffnen.If your solution design included dedicated search pages for specific types of content (for example, an online retail application that has departments listed at the top of the page), you can insert a filter expression alongside an onClick event to open a page in a prefiltered state.

Sie können einen Filter mit oder ohne Suchbegriff senden.You can send a filter with or without a search expression. Beispielsweise wird mit der folgenden Anforderung nach Markenname gefiltert, wobei nur die dem Filter entsprechenden Dokumente zurückgegeben werden.For example, the following request will filter on brand name, returning only those documents that match it.

    GET /indexes/onlineCatalog/docs?$filter=brandname eq ‘Microsoft’ and category eq ‘Games’

Weitere Informationen zu $filter-Ausdrücken finden Sie unter Dokumente durchsuchen (Azure Search-API).See Search Documents (Azure Search API) for more information about $filter expressions.

Siehe auchSee Also