Filtrar a pesquisa de mídia

Se você tiver um app de pesquisa de mídia, poderá usar metadados para filtrar suas consultas de pesquisa. Esta página explica como usar campos de metadados para restringir sua pesquisa a um conjunto específico de documentos.

Antes de começar

Verifique se você criou um app de mídia e um repositório de dados e consumiu dados. Para Para mais informações, consulte Criar um repositório de dados de mídia e Criar um app de música.

Exemplos de documentos

Confira estes exemplos de documentos de mídia. Você pode consultá-los ao ler nesta página.

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

Sintaxe da expressão do filtro

Entenda a sintaxe da expressão de filtro usada para definir seu filtro de pesquisa. A sintaxe da expressão de filtro pode ser resumida pelo seguindo formulário de Backus estendido-Naur:

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

Para filtrar a pesquisa de mídia usando metadados, siga estas etapas:

  1. Encontre o ID do repositório de dados. Se você já tiver o ID do repositório de dados, pule para a próxima etapa.

    1. No console do Google Cloud, acesse a página Agent Builder e No menu de navegação, clique em Repositórios de dados.

      Acesse a página "Repositórios de dados"

    2. Clique no nome do seu repositório de dados.

    3. Na página Dados do seu repositório de dados, encontre o ID do repositório.

  2. Determine o campo ou os campos do documento que você quer filtrar. Por exemplo, para os documentos em Antes de começar, você pode usar o campo categories como um filtro.

    Só é possível usar campos indexáveis em expressões de filtro. Para determinar se um campo pode ser indexado, faça o seguinte:

    1. No console do Google Cloud, acesse a página Agent Builder e No menu de navegação, clique em Repositórios de dados.

      Acessar os repositórios de dados página

    2. Clique no nome do seu repositório de dados.

    3. Na coluna Nome, clique no repositório de dados.

    4. Clique na guia Esquema para ver o esquema do seu repositório de dados. Se o campo for Indexable:

      • Selecione . Em seguida, esse campo estará pronto para ser filtrado na pesquisa. Pule a etapa 3.

      • Você não selecionou , depois seguir a etapa 3 para ativar o campo para indexação.

      • Indisponível em , o campo não poderá ser indexado.

  3. Para tornar um campo, como o campo categories, filtrável, faça o seguintes:

    1. No console do Google Cloud, acesse a página Criador de agentes e, no menu de navegação, clique em Apps.

      Acessar a página "Apps"

    2. Clique no app de pesquisa de mídia.

    3. No menu de navegação, clique em Dados.

    4. Clique na guia Esquema. Essa guia mostra as configurações atuais do campo.

    5. Clique em Editar.

    6. Se ainda não estiver selecionada, marque a caixa de seleção Indexable na linha categories e clique em Save.

    7. Aguarde seis horas para que a edição do esquema seja propagada. Após seis horas, você pode prosseguir para a próxima etapa.

  4. Receber resultados de pesquisa.

    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: o ID do seu projeto.
    • DATA_STORE_ID: o ID do armazenamento de dados.
    • QUERY: o texto da consulta a ser pesquisada.
    • FILTER: um campo de texto para filtrar sua pesquisa usando um filtro expressão.

    Por exemplo, suponha que você queira pesquisar os filmes na seção Antes de início e quiser resultados da pesquisa apenas para filmes que: (1) contenham a palavra "avatar" e (2) estejam no conteúdo; categoria. Para fazer isso, inclua as seguintes instruções na chamada:

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

    Para mais informações, consulte o método search.

    Clique para conferir um exemplo de resposta.

    Se você fizer uma pesquisa como a do procedimento anterior, você receberá uma resposta semelhante à seguinte. Observe que a resposta inclui apenas os documentários do 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": {}
    }