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
Sehen Sie sich diese Beispielmediendokumente an. 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 müssen 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:
Ermitteln Sie Ihre 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 KI-Anwendungen 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 KI-Anwendungen 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 KI-Anwendungen auf und klicken Sie im Navigationsmenü auf Apps.
Klicken Sie auf die Mediensuch-App.
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" }'
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID.DATA_STORE_ID
: die ID Ihres Datenspeichers.QUERY
: Der Suchtext.FILTER
: Textfeld zum Filtern der Suche mit einem Filterausdruck.
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": {} }
Nach verfügbaren Dokumenten filtern
Wenn in den Suchergebnissen nur verfügbare Dokumente zurückgegeben werden sollen, müssen Sie Ihre Abfragen entsprechend filtern. Verfügbare Dokumente sind solche, bei denen das available_time
in der Vergangenheit liegt und das expire_time
nicht angegeben oder auf ein Datum in der Zukunft gesetzt ist.
Filtern Sie, um nur Dokumente zurückzugeben, die derzeit verfügbar sind:
available_time <= \"DATE_TIME\" AND expire_time > \"DATE_TIME\"
Ersetzen Sie DATE_TIME
durch das heutige Datum, z. B. 2025-04-21
oder 2025-04-21T00:00:00Z
.
Filter für Bewertungen, Personen und Organisationen
Die Filtersyntax für Altersfreigaben, Personen und Organisationen ist eindeutig und folgt nicht den oben genannten Mustern. Mit den folgenden Beispielen und Filter-Snippets, die du kopieren kannst, kannst du Filter für Altersfreigaben, Personen und Organisationen erstellen.
Der Filter unterscheidet sich je nachdem, ob Sie das vordefinierte Schema von Google oder Ihr eigenes benutzerdefiniertes Schema verwenden.
Filter für Bewertungen, Personen und Organisationen (vordefiniertes Google-Schema)
Syntax und Beispiele für die Filter „Bewertung“, „Person“ und „Organisation“:
Nach Bewertungen filtern:Sie können nach Bewertungen aus einer bestimmten Quelle filtern.
rating(RATING_SOURCE, aggregate_ratings.rating_score) OPERATOR RATING_SCORE
Ersetzen Sie Folgendes:
RATING_SOURCE
: die Quelle der Altersfreigabe. Bei einem vordefinierten Schema ist dies ein Wert im Feldaggregate_ratings.rating_source
.OPERATOR
: Einer der Vergleichsoperatoren<=
,<
,>=
,>
oder=
RATING_SCORE
: ein Bewertungswert im Bereich [1,5] Bei einem vordefinierten Schema ist dies ein Wert im Feldaggregate_ratings.rating_score
.
Beispiel: Mit diesem Filter wird die Suche auf Filme mit einer IMDB-Bewertung von mehr als 2,5 Sternen beschränkt. Der Wert in den Klammern wird in den Wert der IMDB-Altersfreigabe umgewandelt:
"filter": "rating(imdb, aggregate_ratings.rating_score) > 2.5"
Personen filtern:Sie können nach den Namen von Personen für eine bestimmte Rolle filtern.
person(PERSONS_ROLE, persons.name): ANY NAME_STRING
Ersetzen Sie Folgendes:
PERSONS_ROLE
: Bei einem vordefinierten Schema ist dies ein Wert im Feldpersons.role
(director
,actor
,player
,team
,league
,editor
,author
,character
,contributor
,creator
,editor
,funder
,producer
,provider
,publisher
,sponsor
,translator
,music-by
,channel
odercustom-role
).NAME_STRING
: Ein oder mehrere Namen von Personen mit der angegebenen Rolle. Bei Curl-Befehlen wie in Schritt 4 müssen die doppelten Anführungszeichen mit dem umgekehrten Schrägstrich maskiert werden.
Beispiel: Mit diesem Filter wird die Suche auf Filme beschränkt, in denen einer der Schauspieler Brad Pitt oder Kate Winslet ist.
filter: "person(actor, persons.name): ANY(\"Brad Pitt\", \"Kate Winslet\")"
Nach Organisationen filtern:Sie können nach dem Namen einer Organisation für eine bestimmte Rolle filtern.
org(ORG_ROLE, organization.name): ANY NAME_STRING
Ersetzen Sie Folgendes:
ORG_ROLE
: Bei einem vordefinierten Schema ist dies ein Wert im Feldorganizations.role
(director
,actor
,player
,team
,league
,editor
,author
,character
,contributor
,creator
,editor
,funder
,producer
,provider
,publisher
,sponsor
,translator
,music-by
,channel
odercustom-role
).NAME_STRING
: Ein oder mehrere Namen von Organisationen mit der angegebenen Rolle. Bei cURL-Befehlen wie in Schritt 4 müssen die doppelten Anführungszeichen mit dem umgekehrten Schrägstrich maskiert werden.
In diesem Beispiel wird die Suche auf Filme beschränkt, bei denen die Produktionsfirma Walt Disney Studios ist:
filter: "org(producer, organizations.name): ANY(\"Walt Disney Studios\")"
Filter für Bewertungen, Personen und Organisationen (benutzerdefiniertes Schema)
Wenn Sie ein benutzerdefiniertes Schema verwenden, lesen Sie den Abschnitt Vordefiniertes Google-Schema und dann die Beispiele in diesem Abschnitt. Damit die Filter für Altersfreigabe, Personen und Organisationen in einem benutzerdefinierten Schema funktionieren, müssen die Property-Zuordnungen richtig festgelegt sein. Informationen zu Property-Zuordnungen finden Sie unter Benutzerdefiniertes Schema.
Filter | Zu kartierende Unterkünfte |
---|---|
rating | media_aggregated_rating media_aggregated_rating_score media_aggregated_rating_source |
Person | media_person media_person_name media_person_role |
org | media_organization media_organization_name media_organization_role |
Beispiel für einen Bewertungsfilter für ein benutzerdefiniertes Schema
Mit diesem Filter werden Filme mit einer 5-Sterne-Bewertung von Rotten Tomatoes gesucht:
"filter": "rating(rotten_tomatoes, custom_rating.star_score) = 5"
rotten_tomatoes
ist ein Wert im Feld, das media_aggregated_rating_source
zugeordnet ist. custom_rating.star_score
ist das Feld, das der Schlüsseleigenschaft media_aggregated_rating.media_aggregated_rating_score
zugeordnet ist.
Beispiel für einen Organisationsfilter für ein benutzerdefiniertes Schema
Mit diesem Filter werden Filme gefiltert, deren Musik vom London Symphony Orchestra oder vom Hollywood Studio Symphony stammt.
"filter: org(music-by, company.id): ANY (\"London Symphony Orchestra\", \"Hollywood Studio Symphony\" )
company.id
ist der Name des Felds, das der Property media_organization_name
zugeordnet ist. music-by
ist ein Wert im Feld des Unternehmenseintrags, der media_organization_role
zugeordnet ist.