Wenn Sie eine App für die Mediensuche verwenden, können Sie Ihre Suchanfragen mithilfe von Metadaten filtern. Auf dieser Seite wird erläutert, wie Sie mithilfe von Metadatenfeldern Ihre Suche auf eine bestimmte Gruppe von Dokumenten eingrenzen.
Hinweise
Sie müssen eine Medien-App und einen Datenspeicher erstellt und Daten aufgenommen haben. Weitere Informationen finden Sie unter Mediendatenspeicher erstellen und Medien-App erstellen.
Beispieldokumente
Hier findest du Beispieldokumente für Medien. Sie können sie sich beim Lesen dieser Seite noch einmal ansehen.
{"id":"172851","schemaId":"default_schema","jsonData":"{\"title\":\"Avatar: Creating the World of Pandora (2010)\",\"categories\":[\"Documentary\"],\"uri\":\"http://mytestdomain.movie/content/172851\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
{"id":"243308","schemaId":"default_schema","jsonData":"{\"title\":\"Capturing Avatar (2010)\",\"categories\":[\"Documentary\"],\"uri\":\"http://mytestdomain.movie/content/243308\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
{"id":"280218","schemaId":"default_schema","jsonData":"{\"title\":\"Avatar: The Way of Water (2022)\",\"categories\":[\"Action\",\"Adventure\",\"Sci-Fi\"],\"uri\":\"http://mytestdomain.movie/content/280218\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
{"id":"72998","schemaId":"default_schema","jsonData":"{\"title\":\"Avatar (2009)\",\"categories\":[\"Action\",\"Adventure\",\"Sci-Fi\",\"IMAX\"],\"uri\":\"http://mytestdomain.movie/content/72998\",\"available_time\":\"2023-01-01T00:00:00Z\",\"media_type\":\"movie\"}"}
Filterausdruckssyntax
Sie sollten die Syntax für Filterausdrücke kennen, mit der Sie den Suchfilter definieren. Die Filterausdruckssyntax kann mit der folgenden erweiterten Backus-Naur-Form zusammengefasst werden:
# A single expression or multiple expressions that are joined by "AND" or "OR". filter = expression, { " AND " | "OR", expression }; # Expressions can be prefixed with "-" or "NOT" to express a negation. expression = [ "-" | "NOT " ], # A parenthetical expression. | "(", expression, ")" # A simple expression applying to a text field. # Function "ANY" returns true if the field contains any of the literals. ( text_field, ":", "ANY", "(", literal, { ",", literal }, ")" # A simple expression applying to a numerical field. Function "IN" returns true # if a field value is within the range. By default, lower_bound is inclusive and # upper_bound is exclusive. | numerical_field, ":", "IN", "(", lower_bound, ",", upper_bound, ")" # A simple expression that applies to a numerical field and compares with a double value. | numerical_field, comparison, double ); # Datetime field | datetime_field, comparison, literal_iso_8601_datetime_format); # A lower_bound is either a double or "*", which represents negative infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. lower_bound = ( double, [ "e" | "i" ] ) | "*"; # An upper_bound is either a double or "*", which represents infinity. # Explicitly specify inclusive bound with the character 'i' or exclusive bound # with the character 'e'. upper_bound = ( double, [ "e" | "i" ] ) | "*"; # Supported comparison operators. comparison = "<=" | "<" | ">=" | ">" | "="; # A literal is any double quoted string. You must escape backslash (\) and # quote (") characters. literal = double quoted string; text_field = text field - for example, category; numerical_field = numerical field - for example, score; datetime_field = field of datetime data type - for example available_time; literal_iso_8601_datetime_format = either a double quoted string representing ISO 8601 datetime or a numerical field representing microseconds from unix epoch.
Mediensuche filtern
So filtern Sie die Mediensuche mithilfe von Metadaten:
Suchen Sie die Datenspeicher-ID. Wenn Sie die Datenspeicher-ID bereits haben, fahren Sie mit dem nächsten Schritt fort.
Rufen Sie in der Google Cloud Console die Seite Agent Builder auf und klicken Sie im Navigationsmenü auf Datenspeicher.
Klicken Sie auf den Namen des Datenspeichers.
Rufen Sie auf der Datenseite Ihres Datenspeichers die Datenspeicher-ID ab.
Legen Sie das Dokumentfeld oder die Dokumentfelder fest, nach denen Sie filtern möchten. Für die Dokumente unter Vorab können Sie beispielsweise das Feld
categories
als Filter verwenden.In Filterausdrücken können nur indexierbare Felder verwendet werden. So prüfen Sie, ob ein Feld indexierbar ist:
Rufen Sie in der Google Cloud Console die Seite Agent Builder auf und klicken Sie im Navigationsmenü auf Datenspeicher.
Klicken Sie auf den Namen des Datenspeichers.
Klicken Sie in der Spalte Name auf den Datenspeicher.
Klicken Sie auf den Tab Schema, um das Schema für Ihren Datenspeicher aufzurufen. Wenn Indexierbar für das Feld Folgendes ist:
Wenn Sie
ausgewählt haben, kann das Feld für die Suche gefiltert werden. Überspringen Sie Schritt 3.Nicht ausgewählt
: Folgen Sie dann Schritt 3, um das Feld für die Indexierung zu aktivieren.Wenn
nicht verfügbar ist, kann das Feld nicht indexiert werden.
So machen Sie ein Feld wie das Feld
categories
filterbar:Rufen Sie in der Google Cloud Console die Seite Agent Builder auf und klicken Sie im Navigationsmenü auf Apps.
Klicken Sie auf die App für die Mediensuche.
Klicken Sie im Navigationsmenü auf Daten.
Klicken Sie auf den Tab Schema. Auf diesem Tab werden die aktuellen Feldeinstellungen angezeigt.
Klicken Sie auf Bearbeiten.
Klicken Sie in der Zeile Kategorien das Kästchen Indexierbar an und klicken Sie dann auf Speichern.
Warten Sie sechs Stunden, damit die Schemaänderung übernommen werden kann. Nach sechs Stunden können Sie mit dem nächsten Schritt fortfahren.
Suchergebnisse abrufen
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "filter": "FILTER" }'
- PROJECT_ID: Die ID Ihres Projekts.
- DATA_STORE_ID: Die ID Ihres Datenspeichers.
- QUERY: Der Suchbegriff.
- FILTER: Ein Textfeld, mit dem Sie Ihre Suche mit einem Filterausdruck filtern können.
Angenommen, Sie möchten die Filme im Abschnitt Vorab durchsuchen und nur Suchergebnisse für Filme erhalten, die (1) das Wort „Avatar“ enthalten und (2) der Kategorie „Dokumentarfilm“ zugewiesen sind. Dazu fügen Sie die folgenden Anweisungen in Ihren Aufruf ein:
"query": "avatar", "filter": "categories: ANY(\"Documentary\")"
Weitere Informationen finden Sie im Artikel zur
search
-Methode.Klicken Sie für eine Beispielantwort.
Wenn Sie eine Suche wie die im vorherigen Verfahren beschriebene ausführen, erhalten Sie eine Antwort, die in etwa so aussieht: Die Antwort enthält nur die Avatar-Dokumentationen.
{ "results": [ { "id": "243308", "document": { "name": "projects/431678329718/locations/global/collections/default_collection/dataStores/rdds3_1698205785399/branches/0/documents/243308", "id": "243308", "structData": { "categories": [ "Documentary" ], "title": "Capturing Avatar (2010)", "uri": "http://mytestdomain.movie/content/243308", "media_type": "movie" } } }, { "id": "172851", "document": { "name": "projects/431678329718/locations/global/collections/default_collection/dataStores/rdds3_1698205785399/branches/0/documents/172851", "id": "172851", "structData": { "categories": [ "Documentary" ], "uri": "http://mytestdomain.movie/content/172851", "media_type": "movie", "title": "Avatar: Creating the World of Pandora (2010)" } } } ], "totalSize": 2, "attributionToken": "XfBcCgwIvIzJqwYQ2_qNxwMSJDY1NzEzNmY1LTAwMDAtMmFhMy05YWU3LTE0MjIzYmIwOGVkMiIFTUVESUEqII6-nRXFy_MXnIaOIsLwnhXUsp0VpovvF6OAlyKiho4i", "guidedSearchResult": {}, "summary": {} }