Filtrare la ricerca di contenuti multimediali

Se hai un'app di ricerca di contenuti multimediali, puoi utilizzare i metadati per filtrare le query di ricerca. Questa pagina spiega come utilizzare i campi dei metadati per limitare la ricerca a un insieme specifico di documenti.

Prima di iniziare

Assicurati di aver creato un'app multimediale e un datastore e di aver importato i dati. Per maggiori informazioni, consulta Creare un datastore di contenuti multimediali e Creare un'app multimediale.

Documenti di esempio

Esamina questi documenti di esempio per i contenuti multimediali. Puoi consultarli mentre leggi questa pagina.

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

Sintassi dell'espressione di filtro

Assicurati di comprendere la sintassi dell'espressione del filtro che utilizzerai per definire il filtro di ricerca. La sintassi dell'espressione di filtro può essere riassunta dalla seguente forma Backus-Naur estesa:

  # 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.

Per filtrare la ricerca di contenuti multimediali utilizzando i metadati:

  1. Trova l'ID del tuo datastore. Se hai già l'ID del tuo datastore, vai al passaggio successivo.

    1. Nella console Google Cloud , vai alla pagina Agent Builder e nel menu di navigazione fai clic su Data Store.

      Vai alla pagina Datastore

    2. Fai clic sul nome del tuo datastore.

    3. Nella pagina Dati del tuo datastore, ottieni l'ID del datastore.

  2. Determina il campo o i campi del documento in base ai quali vuoi filtrare. Ad esempio, per i documenti in Prima di iniziare, puoi utilizzare il campo categories come filtro.

    Puoi utilizzare solo campi indicizzati nelle espressioni di filtro. Per determinare se un campo è indicizzato:

    1. Nella console Google Cloud , vai alla pagina Agent Builder e nel menu di navigazione fai clic su Data Store.

      Vai alla pagina Data Store

    2. Fai clic sul nome del tuo datastore.

    3. Nella colonna Nome, fai clic sul datastore.

    4. Fai clic sulla scheda Schema per visualizzare lo schema del tuo datastore. Se Indicizzabile per il campo è:

      • Se hai selezionato , il campo è pronto per essere filtrato per la ricerca. Salta il passaggio 3.

      • Non selezionato , quindi segui il passaggio 3 per attivare il campo per l'indicizzazione.

      • Non disponibile , quindi il campo non può essere indicizzato.

  3. Per rendere un campo, ad esempio il campo categories, filtrabile:

    1. Nella console Google Cloud , vai alla pagina Agent Builder e nel menu di navigazione fai clic su App.

      Vai alla pagina App

    2. Fai clic sull'app di ricerca di contenuti multimediali.

    3. Nel menu di navigazione, fai clic su Dati.

    4. Fai clic sulla scheda Schema. Questa scheda mostra le impostazioni correnti dei campi.

    5. Fai clic su Modifica.

    6. Se non è già selezionata, seleziona la casella di controllo Indicizzabili nella riga Categorie e poi fai clic su Salva.

    7. Attendi sei ore per consentire la propagazione della modifica dello schema. Dopo sei ore, puoi procedere al passaggio successivo.

  4. Visualizza i risultati di ricerca.

    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: l'ID del progetto.
    • DATA_STORE_ID: l'ID del tuo datastore.
    • QUERY: il testo della query da cercare.
    • FILTER: un campo di testo per filtrare la ricerca utilizzando un'espressione di filtro.

    Ad esempio, supponiamo che tu voglia cercare i film nella sezione Prima di iniziare e che tu voglia visualizzare i risultati di ricerca solo per i film che: (1) contengono la parola "avatar" e (2) appartengono alla categoria "Documentario". A tal fine, includi le seguenti dichiarazioni nella chiamata:

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

    Per ulteriori informazioni, consulta il metodo search.

    Fai clic per visualizzare un esempio di risposta.

    Se esegui una ricerca come quella descritta nella procedura precedente, puoi aspettarti di ricevere una risposta simile alla seguente. Tieni presente che la risposta include solo i documentari di Avatar.

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