Mediensuche filtern

Wenn Sie eine App für die Mediensuche haben, können Sie Metadaten verwenden, um Ihre Suchanfragen zu filtern. Auf dieser Seite wird erläutert, wie Sie Metadatenfelder verwenden, um Ihre Suche auf eine bestimmte Gruppe von Dokumenten zu beschränken.

Hinweise

Sie müssen eine Media-App und einen Datenspeicher erstellt und Daten aufgenommen haben. Weitere Informationen finden Sie unter Mediendatenspeicher erstellen und Media-App erstellen.

Beispieldokumente

Sehen Sie sich diese Beispielmediendokumente an. Sie können sie beim Lesen dieser Seite noch einmal nachschlagen.

{"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

Machen Sie sich mit der Syntax für Filterausdrücke vertraut, die Sie zum Definieren Ihres Suchfilters verwenden. Die Filterausdruckssyntax kann mit der folgenden Extended 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.

So filtern Sie die Mediensuche mithilfe von Metadaten:

  1. Suchen Sie nach Ihrer Datenspeicher-ID. Wenn Sie die ID Ihres Datenspeichers bereits haben, fahren Sie mit dem nächsten Schritt fort.

    1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf und klicken Sie im Navigationsmenü auf Datenspeicher.

      Zur Seite „Datenspeicher“

    2. Klicken Sie auf den Namen des Datenspeichers.

    3. Rufen Sie auf der Datenseite Ihres Datenspeichers die Datenspeicher-ID ab.

  2. Legen Sie das Dokumentfeld oder die Dokumentfelder fest, nach denen Sie filtern möchten. Für die Dokumente unter Vorbereitung können Sie beispielsweise das Feld categories als Filter verwenden.

    Sie können nur indexierbare Felder in Filterausdrücken verwenden. So stellen Sie fest, ob ein Feld indexierbar ist:

    1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf und klicken Sie im Navigationsmenü auf Datenspeicher.

      Zur Seite „Datenspeicher“

    2. Klicken Sie auf den Namen des Datenspeichers.

    3. Klicken Sie in der Spalte Name auf den Datenspeicher.

    4. Klicken Sie auf den Tab Schema, um das Schema für Ihren Datenspeicher aufzurufen. Wenn Indexable für das Feld Folgendes ist:

      • Wenn Sie ausgewählt haben, kann das Feld für die Suche gefiltert werden. Überspringen Sie Schritt 3.

      • Wenn das Feld nicht ausgewählt ist , folgen Sie Schritt 3, um es für die Indexierung zu aktivieren.

      • Nicht verfügbar : Das Feld kann nicht indexiert werden.

  3. Damit ein Feld wie das Feld categories gefiltert werden kann, gehen Sie so vor:

    1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf und klicken Sie im Navigationsmenü auf Apps.

      Zur Seite „Apps“

    2. Klicken Sie auf Ihre Mediensuchanwendung.

    3. Klicken Sie im Navigationsmenü auf Daten.

    4. Klicken Sie auf den Tab Schema. Auf diesem Tab werden die aktuellen Feldeinstellungen angezeigt.

    5. Klicken Sie auf Bearbeiten.

    6. Falls noch nicht geschehen, klicken Sie in der Zeile Kategorien das Kästchen Indexierbar an und klicken Sie dann auf Speichern.

    7. Warten Sie sechs Stunden, damit die Schemaänderung übernommen werden kann. Nach sechs Stunden können Sie mit dem nächsten Schritt fortfahren.

  4. 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 Abfragetext für die Suche.
    • FILTER: Ein Textfeld zum Filtern der Suche mit einem Filterausdruck.

    Angenommen, Sie möchten die Filme im Bereich Vorbereitung durchsuchen und nur Suchergebnisse für Filme erhalten, die (1) das Wort „Avatar“ enthalten und (2) der Kategorie „Dokumentarfilm“ angehören. Dazu müssen Sie die folgenden Anweisungen in Ihren Aufruf einfügen:

    "query": "avatar",
    "filter": "categories: ANY(\"Documentary\")"
    

    Weitere Informationen finden Sie im Artikel zur search-Methode.

    Klicken Sie hier, um eine Beispielantwort zu sehen.

    Wenn Sie eine Suche wie im vorherigen Verfahren durchführen, erhalten Sie eine Antwort ähnlich der folgenden. 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 Sie möchten, dass in Ihren Suchergebnissen nur verfügbare Dokumente zurückgegeben werden, müssen Sie in Ihre Anfragen einen entsprechenden Filter einfügen. Verfügbare Dokumente sind solche, bei denen available_time in der Vergangenheit liegt und expire_time nicht angegeben oder auf ein zukünftiges Datum festgelegt ist.

Filter, um nur derzeit verfügbare Dokumente zurückzugeben:

  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. Anhand der folgenden Beispiele und kopierbaren Filter-Snippets können Sie Filter für Bewertungen, Personen und Organisationen erstellen.

Der Filter unterscheidet sich je nachdem, ob Sie das von Google vordefinierte Schema oder Ihr eigenes benutzerdefiniertes Schema verwenden.

Filter für Bewertungen, Personen und Organisationen (von Google vordefiniertes Schema)

Die Syntax und Beispiele für die Filter „Bewertung“, „Person“ und „Organisation“ sind wie folgt:

  • Nach Bewertungen filtern:Filtern Sie nach Bewertungen aus einer bestimmten Quelle.

     rating(RATING_SOURCE, aggregate_ratings.rating_score) OPERATOR RATING_SCORE
    

    Ersetzen Sie Folgendes:

    • RATING_SOURCE: die Quelle für die Bewertung. Bei einem vordefinierten Schema ist dies ein Wert im Feld aggregate_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 Feld aggregate_ratings.rating_score.

    Beispiel: Dieser Filter schränkt die Suche auf Filme mit IMDB-Bewertungen von mehr als 2½ Sternen ein. Der Wert in den Klammern wird zum Wert der IMDB-Bewertung aufgelöst:

    "filter": "rating(imdb, aggregate_ratings.rating_score) > 2.5"
    
  • Personen filtern:Filtern Sie nach den Namen von Personen mit einer bestimmten Rolle.

    person(PERSONS_ROLE, persons.name): ANY NAME_STRING
    

    Ersetzen Sie Folgendes:

    • PERSONS_ROLE: Bei einem vordefinierten Schema ist dies ein Wert im Feld persons.role (director, actor, player, team, league, editor, author, character, contributor, creator, editor, funder, producer, provider, publisher, sponsor, translator, music-by, channel oder custom-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: Dieser Filter schränkt die Suche auf Filme ein, in denen Brad Pitt oder Kate Winslet mitspielen.

    filter: "person(actor, persons.name): ANY(\"Brad Pitt\", \"Kate Winslet\")"
    
  • Organisationen filtern:Filtern Sie nach einem Organisationsnamen für eine bestimmte Rolle.

    org(ORG_ROLE, organization.name): ANY NAME_STRING
    

    Ersetzen Sie Folgendes:

    • ORG_ROLE: Bei einem vordefinierten Schema ist dies ein Wert im Feld organizations.role (director, actor, player, team, league, editor, author, character, contributor, creator, editor, funder, producer, provider, publisher, sponsor, translator, music-by, channel oder custom-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, deren Produktionsorganisation 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 Von Google vordefiniertes Schema und dann die Beispiele in diesem Abschnitt. Damit die Filter für Altersfreigabe, Person und Organisation in einem benutzerdefinierten Schema funktionieren, müssen die Attributzuordnungen richtig festgelegt sein. Weitere Informationen zu Attributzuordnungen finden Sie unter Benutzerdefiniertes Schema.

Filter Zuzuordnende Eigenschaften
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 wird nach Filmen 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. Das custom_rating.star_score ist das Feld, das der Schlüsselattribut media_aggregated_rating.media_aggregated_rating_score zugeordnet ist.

Beispiel für einen Organisationsfilter für ein benutzerdefiniertes Schema

Mit diesem Filter wird nach Filmen gesucht, in denen die 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 Unternehmensdatensatzes, der media_organization_role zugeordnet ist.