Filtra ricerca di contenuti multimediali

Se hai un'app di ricerca di contenuti multimediali, puoi utilizzare i metadati per filtrare la ricerca query. 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 delle espressioni di filtro

Assicurati di comprendere la sintassi delle espressioni di 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 );
  # 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;

Per filtrare la ricerca di contenuti multimediali utilizzando i metadati:

  1. Individua l'ID datastore. Se hai già un datastore ID, vai al passaggio successivo.

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

      Vai alla pagina Datastore

    2. Fai clic sul nome del 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 descritti in Prima di iniziare, potresti usare il campo categories come filtro.

    Puoi utilizzare solo campi indicizzabili nelle espressioni di filtro. Per determinare se è indicizzabile, segui questi passaggi:

    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 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 le sei ore, puoi procedere con il passaggio successivo.

  4. Ottieni 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 filtro un'espressione di base.

    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". Puoi farlo includendo le seguenti dichiarazioni con i tuoi chiama:

    "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 nella procedura precedente, puoi aspettarti una risposta simile alla seguente. Nota 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": {}
    }