Einführung in Azure Cognitive Search

28.12.2020

Große Mengen an Daten in elektronischer Form wären nicht von großem Nutzen, wenn die Informationen nicht nach bestimmten Kriterien durchgesucht werden könnten. Zu diesem Zweck stellt Microsoft in der Cloud einen Suchdienst bereit – eine Search-as-a-Service-Lösung (SaaS) – für die Entwicklung von Web-Apps und mobilen Apps – Azure Cognitive Search.

Die Implementierung eines Analysetools kann manuell teuer werden. Es benötigt viele Arbeitskräfte und einige Stunden Arbeitszeit für die Programmierung, Abfrage, und das Deployment. Da der Service „Azure Cognitive Search“ in der Cloud läuft, werden die Infrastruktur und Verfügbarkeit von Microsoft verwaltet. Wir stellen ein paar wichtige Funktionalitäten vor und zeigen, wie sie in Projekten umgesetzt werden können. Außerdem gehen wir auf die Etappen zur Erstellung eines Indexschemas ein, sodass wir in einem Beispieldokument relevante Inhalte suchen können.

Anwendungsmöglichkeiten für Azure Cognitive Search

Der Service vereinfacht die Komplexität bei der Informationsgewinnung. Dadurch können sich Betriebe voll und ganz auf die Verbesserung der Endbenutzererfahrung und die Relevanzoptimierung der angezeigten Daten konzentrieren.

Für welche Anwendungen der Service genutzt werden kann? Hier sind ein paar Beispiele:

  • Autokorrektur
  • Autocompletion
  • Automatische Vervollständigung und Relevanzoptimierung
  • Texte identifizieren und extrahieren
  • Spracherkennung
  • Paginierung (eng. Pagination)
  • Ist für die Datenanalyse von strukturierten und unstrukturierten Daten geeignet (Bilder, Blobstorage, CosmosDb…).

Die Suchfunktion

Unser Web-App-Beispiel zeigt eine Liste von Biergärten in München. Die Daten wurden aus einer JSON-Datei importiert und enthalten Attribute wie z.B. den Namen eines Biergartens, zu welcher Brauerei er gehört, den Standort, usw.

Die Volltextsuche ist der Hauptanwendungsfall für die meisten suchbasierten Anwendungen. Das ermöglicht zum Beispiel, die Fähigkeiten das Autocomplete einzubauen.

Beispiel Azure Cognitive Search für Autovervollständigung
Abbildung 1: Beispiel einer Web-Anwendung Hauptseite unter Verwendung Azure Cognitive Search für die Autovervollständigung

Filtern

Daten können mit Kategorien gefiltert werden, die wir beispielhaft in einem Schema definieren:

Beispiel einer Web-Anwendung Hauptseite unter Verwendung Azure Cognitive Search für die Sortierung von Daten.
Abbildung 2: Beispiel einer Web-Anwendung Hauptseite unter Verwendung Azure Cognitive Search für die Sortierung von Daten

Text Analyse

Azure Cognitive Search kann auch Rechtschreibfehler behandeln. Wenn wir in unserem Azure Portal mit Azure Cognitive Search den Ausdruck „englicher Grten“ suchen, werden die Abfrageergebnisse nach Relevanz sortiert. Diese Information wird für alle Ergebnisse angezeigt in „@search.score“.

In diesem Beispiel lautet unsere Abfrage: search=englicher Grten ~&queryType=full

Beispiel eines query
Abbildung 3: Beispiel eines query

Dieses Ergebnis wurde von Azure Cognitive Search geliefert:

Erstellung eine Azure Cognitive Search Index Schema im Azure Portal
Abbildung 4: Erstellung eines Azure Cognitive Search Index Schemas im Azure Portal

Erstellung von einem Azure Cognitive Search Suchindex mit Postman

Damit wir unser Dokument durchsuchen können, muss in Azure Cognitive Search ein Suchindex hergestellt werden.1 Dieser Index wird von dem Dienst für Volltext- und gefilterte Abfragen verwendet. Microsoft stellt dem Entwickler mehrere Tools zur Verfügung, damit er auf den Cloudsuchdienst zugreifen kann: dazu gehören .NET SDK, REST-API und das Microsoft Azure Portal. Für die Erstellung von Indizes und Import der Daten werden wir für die nächsten Schritte die REST-API und Azure Portal Ansätze nutzen.

Nachdem ein Azure Cognitive Search Service in unserem Portal erstellt wurde, muss ein neuer Index hinzugefügt werden. Mit diesem Index definieren wir ein Schema, das beschreibt, wie unser Dokument aussehen sollte.

Achtung: Für alle Felder muss der Datentyp und Filter spezifiziert werden.

Der Index ist die Definition von Feldern, die zurückgegeben werden, sowie Metadaten des Datentyps dieses Feldes – ob es sich um einen Schlüssel handelt oder nicht und ob es durchsuchbar, filterbar, facettierbar oder sortierbar ist.

Mit Filtern werden nur die ausgewählten Elemente, die in einer Anfrage abgefragt werden können, von den Benutzern gelesen.

Search analyzer: Erlaubt lexikalische Analysen.

Suggesters: Gibt übereinstimmenden gefundenen Text zurück.

Und so sieht unsere Biergarten Index im Portal aus:

Erstellung eine Azure Cognitive Search Index Schema in der Azure Portal
Abbildung 5: Erstellung eines Azure Cognitive Search Index Schemas im Azure Portal

Das Gleiche kann auch durch eine http-Abfrage gemacht werden. In diesem Beispiel definieren wir unseren Index und wir schicken einen Post Request an unsere Azure Cognitive Search API:

POST https://[servicename].search.windows.net/indexes?api-version=[api-version] Content-Type: application/json
api-key: [admin key]

Body:

Erstellung einer Indexschema mithilfe von eine Http-Request
Abbildung 6: Erstellung eines Indexschemas mithilfe eines http-Requests

Datenimport

Azure Cognitive gibt uns außerdem die Möglichkeit, die Datenquelle zu spezifizieren, um die Daten zu importieren.

Spezifizierung einen Datenquelle in Azure Portal
Abbildung 7: Spezifizierung einer Datenquelle im Azure Portal

In diesem Beispiel importieren wir die Daten mit Hilfe der Azure Cognitive Search API. Mit dem Parameter „@search.action“ spezifizieren wir, welche gewünschte Datenoperation durchgeführt wird.2

POST https:// [servicename].search.windows.net/indexes/biergarten/docs/index?api-version=2020-06-30
Body:

Erstellung eine Azure Cognitive Search Index Schema in der Azure Portal
Abbildung 8: Erstellung eines Azure Cognitive Search Index Schemas im Azure Portal

Benutzerfahrung verbessern

Beispielsfall: Eine standortbasierte Suche
Der Marienplatz ist einer der schönsten Orte in München. Nach langem Warten auf das Glockenspiel möchte ich als Benutzer meiner App mich im nächsten Biergarten erfrischen. Azure Cognitive Search erlaubt es, die Daten nach geografischen Standorten zu verarbeiten, zu filtern oder mir den passenden Biergarten vorzuschlagen.

In unserem Index enthält das Feld „Location“ die Breiten- und Längengradkoordinaten.

Erstellung eine Azure Cognitive Search Index Schema in der Azure Portal
Abbildung 9: Erstellung eine Azure Cognitive Search Index Schema in der Azure Portal

Der Parameter $count gibt die Anzahl der Ergebnisse zurück.

In diesem Beispiel wird die geo.distance-Funktion verwendet. Das query3 filtert und zeigt alle Einträge eines Dokuments im Umkreis eines Startpunkts bis zu einer beliebigen festgelegten Entfernung.

search=*&$count=true&$filter=geo.distance(Location,geography’POINT(48.1373932 11.5732598)‘) le 1

Als Ergebnis liefert Azure Cognitive Search eine Eingabe mit einer 1 als search.score zurück :

Erstellung eine Azure Cognitive Search Index Schema in der Azure Portal
Abbildung 10: Erstellung eines Azure Cognitive Search Index Schemas im Azure Portal

Anwendungen stellen oft einen User bereit, ein „find near me“ Feature. Die Nutzung von dieser Azure Cognitive Search Fähigkeit lässt sich zum Beispiel in Alltagssituation gut einsetzen.

Kosten für Azure Cognitive Search

Microsoft bietet für Azure Cognitive Search verschiedene Tarife. Die Tarife4 unterscheiden sich durch die Anzahl an Indexen, die wir erstellen können und die Größe der Speicher. Manche Tarife bieten die Datenreplikation, sodass die Daten an mehreren Orten gespeichert werden können. Das erlaubt einen besseren Datenzugriff. Bei jeder Einheit eines Tarifs ist eine bestimmte Anzahl von API-Transaktionen inbegriffen.

Kosten eines Azure Cognitive Search Ressource
Abbildung 11: Kosten einer Azure Cognitive Search Ressource (Stand: Dezember 2020)

Fazit

Mit Hilfe von integrierter KI gibt Azure Cognitive Search den Projekten die Möglichkeit, die Effizienz bei der Datenextraktion zu erhöhen. Die Anwendungsszenarien, bei denen Azure Cognitive Search benutzt werden kann, sind vielfältig.

Beispielsweise verbessert Azure Cognitive Search die Relevanz der extrahierten Daten und steigert die Effizienz der Anfragebeantwortung, wodurch Entwickler ihre Produktivität steigern und einen besseren Service bieten können. Es kann die Betriebskosten eines Unternehmens senken, da weniger Zeit und Ressourcen für die Informationsbeschaffung und Wissensentdeckung benötigt wird. Wenn ein Projekt wächst, steigt auch die Notwendigkeit, große Datenmengen zu analysieren. Azure Cognitive Search ist skalierbar und kann an die Erhöhung der Abfrageanforderungen und Abfragevolumina antworten. Azure Cognitive Search eignet sich zum Beispiel gut für kommerzielle Anwendungen, da die Anzahl der Kunden immer größer wird und die Produktrecherche eine wichtige Rolle spielt.


1 Create Indexer (Preview REST API)
https://docs.microsoft.com/en-us/rest/api/searchservice/preview-api/create-indexer ^

2 Add, Update or Delete Documents (Azure Cognitive Search REST API),
https://docs.microsoft.com/en-us/rest/api/searchservice/addupdate-or-delete-documents ^

3 Geospatial Properties,
https://www.odata.org/blog/geospatial-properties/ ^

4 Azure Cognitive Services – Preise
https://azure.microsoft.com/de-de/pricing/details/cognitive-services/ ^

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*