Durchsuchen eines Index
Der Index ist das suchbare Ergebnis des Indizierungsprozesses. Er besteht aus einer Sammlung von JSON-Dokumenten mit Feldern, die die während der Indizierung extrahierten Werte enthalten. Clientanwendungen können den Index abfragen, um Informationen abzurufen, zu filtern und zu sortieren.

Jedes Indexfeld kann mit den folgenden Attributen konfiguriert werden:
- key: Felder, die einen eindeutigen Schlüssel für Indexdatensätze definieren
- searchable: Felder, die mithilfe der Volltextsuche abgefragt werden können
- filterable: Felder, die in Filterausdrücke eingeschlossen werden können, um nur Dokumente zurückzugeben, die den angegebenen Einschränkungen entsprechen
- sortable: Felder, mit denen die Ergebnisse sortiert werden können
- facetable: Felder, mit denen Werte für Facetten (Benutzeroberflächenelemente zum Filtern der Ergebnisse basierend auf einer Liste bekannter Feldwerte) bestimmt werden können
- abrufbar: Felder, die in Suchergebnissen enthalten sein können (standardmäßig sind alle Felder abrufbar, es sei denn, dieses Attribut wird explizit entfernt)
Volltextsuche
Obwohl Sie Indexeinträge basierend auf dem abgleichen einfacher Feldwerte abrufen können, verwenden die meisten Suchlösungen Volltextsuchsemantik , um einen Index abzufragen.
Die Volltextsuche beschreibt Suchlösungen, die textbasierte Dokumentinhalte analysieren, um Abfragebegriffe zu finden. Volltext-Suchabfragen in Azure AI Search basieren auf der Lucene-Abfragesyntax, die einen umfassenden Satz von Abfragevorgängen zum Suchen, Filtern und Sortieren von Daten in Indizes bereitstellt. Azure KI-Suche unterstützt zwei Varianten der Lucene-Syntax:
- Einfach: Eine intuitive Syntax, die das Ausführen grundlegender Suchvorgänge erleichtert, bei denen die von einem Benutzer gesendeten Literalabfrageausdrücke verglichen werden.
- Vollständig: Eine erweiterte Syntax, die komplexe Filterung, reguläre Ausdrücke und andere komplexere Abfragen unterstützt.
Clientanwendungen senden Abfragen an Azure KI-Suche, indem ein Suchausdruck zusammen mit anderen Parametern angegeben wird, die bestimmen, wie der Ausdruck ausgewertet wird und die Ergebnisse zurückgegeben werden. Einige allgemeine Parameter, die mit einer Abfrage übermittelt werden:
- search: Ein Suchausdruck, der die zu suchenden Begriffe enthält
- queryType: Die auszuwertende Lucene-Syntax (einfach oder vollständig)
- searchFields: Die Indexfelder, die durchsucht werden sollen
- select: Die Felder, die in die Ergebnisse eingeschlossen werden sollen
- searchMode: Kriterien für das Einschließen von Ergebnissen auf der Grundlage mehrerer Suchbegriffe Angenommen, Sie durchsuchen einen Index der reisebezogenen Dokumente nach einem komfortablen Hotel. Mit dem searchMode-Wert Any werden Dokumente zurückgegeben, die „komfortabel“, „Hotel“ oder beides enthalten. Mit dem searchMode-Wert All werden nur Dokumente zurückgegeben, die sowohl „komfortabel“ als auch „Hotel“ enthalten.
Die Abfrageverarbeitung besteht aus vier Phasen:
- Abfrageanalyse. Der Suchausdruck wird ausgewertet und als Struktur geeigneter Unterabfragen neu erstellt. Unterabfragen können Abfragen von Begriffen (Suchen nach bestimmten einzelnen Wörtern im Suchausdruck, z. B. Hotel), Abfragen von Ausdrücken (Suchen nach mehrere Begriffe umfassenden Ausdrücken im Suchausdruck, z. B. "kostenloses Parken") und Präfixabfragen (Suchen nach Begriffen mit einem angegebenen Präfix, z. B. ergibt Luft* eine Übereinstimmung mit Luftröhre, Luftfilter und Luftbuchung) umfassen.
- Lexikalische Analyse: Die Abfragebegriffe werden basierend auf linguistischen Regeln analysiert und verfeinert. Beispielsweise werden Texte in Kleinbuchstaben konvertiert und nicht wesentliche Stoppwörter (z. B. "der, die, das", "ein, einer, eine", "ist" usw.) entfernt. Dann werden Wörter in ihre Stammform umgewandelt (z. B. "komfortabel" wird dann vereinfacht in "Komfort") und zusammengesetzte Wörter werden in ihre Bestandteilbegriffe aufgeteilt.
- Dokumentenabruf: Die Abfragebegriffe werden mit den indizierten Begriffen verglichen, und die übereinstimmenden Dokumente werden identifiziert.
- Bewertung: Jedem Ergebnis wird auf der Grundlage der TF/IDF-Berechnung (Term Frequency/Inverse Document Frequency, Vorkommenshäufigkeit/Inverse Dokumenthäufigkeit) eine Relevanzbewertung zugewiesen.
Tipp
Weitere Informationen zum Abfragen eines Indexes und Details zur einfachen und vollständigen Syntax finden Sie in der Azure AI Search-Dokumentation unter Abfragetypen und Kompositionen in Azure AI Search .
Benutzer einer Suchlösung möchten häufig die Abfrageergebnisse durch das Filtern und Sortieren nach Feldwerten verfeinern. Azure KI-Suche unterstützt diese beiden Funktionen über die API für Suchabfragen.
Filtern von Ergebnissen
Sie haben zwei Möglichkeiten für das Anwenden von Filtern auf Abfragen:
- Indem man Filterkriterien in einen einfachenSuchausdruck aufnimmt.
- Durch das Bereitstellen eines OData-Filterausdrucks als $filter-Parameter mit einem Suchausdruck in der vollständigen Syntax.
Sie können einen Filter auf ein beliebiges filterbares Feld im Index anwenden.
Angenommen, Sie möchten Dokumente suchen, die den Text "London " enthalten, deren Feldwert "Autor " von Reviewer ist.
Sie können dieses Ergebnis erzielen, indem Sie den folgenden einfachenSuchausdruck übermitteln:
search=London+author='Reviewer'
queryType=Simple
Alternativ können Sie einen OData-Filter in einem $filter Parameter mit einem vollständigen Lucene-Suchausdruck wie folgt verwenden:
search=London
$filter=author eq 'Reviewer'
queryType=Full
Hinweis
Bei OData-$filter-Ausdrücken wird die Groß-/Kleinschreibung beachtet!
Filtern mit Facets
Facets sind eine nützliche Möglichkeit, Benutzern Filterkriterien basierend auf Feldwerten in einem Resultset zu präsentieren. Sie lassen sich am besten verwenden, wenn ein Feld eine kleine Anzahl diskreter Werte aufweist, die auf der Benutzeroberfläche als Links oder Optionen angezeigt werden können.
Um Facets zu verwenden, müssen Sie facetable-Felder angeben, für die Sie die möglichen Werte in einer anfänglichen Abfrage abrufen möchten. Sie können beispielsweise die folgenden Parameter verwenden, um alle möglichen Werte für das Feld "Autor " zurückzugeben:
search=*
facet=author
Die Ergebnisse dieser Abfrage enthalten eine Auflistung diskreter Facetwerte, die auf der Benutzeroberfläche angezeigt werden können, damit sie der Benutzer auswählen kann. Anschließend können Sie in einer nachfolgenden Abfrage den ausgewählten Facetwert verwenden, um die Ergebnisse zu filtern:
search=*
$filter=author eq 'selected-facet-value-here'
Sortieren von Ergebnissen
Standardmäßig werden die Ergebnisse basierend auf der Relevanzbewertung sortiert, die durch den Abfrageprozess zugewiesen wird. Die Übereinstimmungen mit der höchsten Bewertung werden am Anfang der Liste aufgeführt. Sie können diese Sortierreihenfolge jedoch außer Kraft setzen, indem Sie einen OData-Orderby-Parameter einschließen, der ein oder mehrere sortierbare Felder und eine Sortierreihenfolge (asc oder desc) angibt.
Um z. B. die Ergebnisse so zu sortieren, dass die zuletzt geänderten Dokumente zuerst aufgeführt werden, können Sie die folgenden Parameterwerte verwenden:
search=*
$orderby=last_modified desc
Tipp
Weitere Informationen zur Verwendung von Filtern finden Sie in der Azure AI Search-Dokumentation unter "Filter" in Azure AI Search .