Pesquisa avançada

Esta seção discute mais detalhes e tópicos avançados do recurso de pesquisa.

Sinônimos personalizados

O Document AI Warehouse oferece um recurso chamado "Sinônimos personalizados", que permite aos clientes fornecer os próprios sinônimos para domínios específicos. Um sinônimo, como o nome sugere, é uma palavra semelhante usada durante a pesquisa. Se o usuário pesquisar "televisão", os seguintes sinônimos poderão ser adicionados sem que ele saiba: "TV", "monitor de vídeo", "tela de vídeo". Os termos de pesquisa originais do usuário e os sinônimos serão usados para realizar a consulta de pesquisa.

Esse recurso ajuda a expandir a pesquisa de um usuário e retornar os resultados esperados. O uso típico inclui termos, acrônimos, gírias e dialetos da empresa ou do setor.

Synonym, Context e SynonymSet

O Document AI Warehouse apresenta três termos principais para personalização de sinônimos:

  • Synonym. Um sinônimo representa um conjunto de palavras com significados semelhantes.

  • Context. Um contexto representa um grupo de usuários (como usuários do setor, da divisão ou da organização) que têm sinônimos específicos não usados por outros grupos. Por exemplo, os departamentos de finanças e saúde provavelmente usam um SynonymSet completamente diferente. Os contextos podem ser especificados no campo queryContext da API Search. Assim, usar contextos diferentes para os mesmos termos de consulta de pesquisa pode gerar resultados diferentes.

  • SynonymSet. Um SynonymSet é um conjunto de sinônimos para um contexto específico.

{
  "name": string,
  "context": string,
  "synonyms": [
    {
      object (Synonym)
    }
  ]
}

Exemplo de caso de uso:

SynonymSet com contexto: "finance"

"Moeda","Câmbio","dólar","euro","iene"
"Inflação","IPC","expansão econômica","boom econômico","preços mais altos"
"IRS","Internal Revenue Service","US Treasury"
"Declaração de imposto de renda","1040","1120","1099","W-2"

No exemplo anterior, quando o usuário consulta "Moeda" e o queryContext é "finanças", os outros sinônimos nessa linha (ou seja, câmbio, dólar, euro, iene) são adicionados implicitamente à consulta de pesquisa. Da mesma forma, se o usuário consultar qualquer termo nessa linha, todos os outros termos serão adicionados à consulta final. Usando o mesmo exemplo, se o usuário pesquisar "euro", as palavras "moeda", "câmbio", "dólar" e "iene" serão adicionadas à consulta final.

SynonymSet com contexto: "healthcare"

"provider","clinic","hospital","doctor","therapist","specialist"
"Medical claim","Claim","1500","Diagnosis","ICD-9","ICD9","ICD-10","ICD10","CPT","HCPCS"
"injury","trauma","hurt","wound","sore","bruise","cut","laceration","lesion","abrasion","contusion"

Pesquisar com expansão de sinônimos personalizados

Quando os clientes querem pesquisar documentos com expansão de sinônimos personalizada, eles precisam especificar um ou mais query_context. Consulte a documentação na API SearchDocuments.

Como o nome sugere, folder search pesquisa apenas em uma pasta específica e nas subpastas dela.

Uma solicitação de pesquisa de exemplo seria assim:

  {
    document_query {
      query: "songs";,
      folderNameFilter: "projects/PROJECT_NUM/locations/LOCATION/documents/888"
    }
  }

Histogramas

Os histogramas são um recurso avançado que agrega contagens em dados especificados. Por exemplo, quantos documentos de cada esquema correspondem à consulta do usuário? Para um banco de dados relacionado ao governo, se o usuário pesquisar "Condado de Orange", um histograma de esquema de dados poderá retornar o número de carteiras de motorista, certidões de casamento ou escrituras que correspondem aos critérios de pesquisa. Os histogramas respeitam as permissões de acesso a dados do usuário solicitante. Portanto, apenas os documentos a que o usuário tem acesso são contabilizados.

Os histogramas podem ser um recurso eficiente, mas a coleta e agregação de todos os dados leva tempo.

Os histogramas não são afetados pelos campos de paginação da solicitação de pesquisa.

Formato geral de consulta de histograma

A HistogramQuery é definida como:

{
  "histogramQuery": string,
  "requirePreciseResultSize": boolean,
  "filters": {
    object (HistogramQueryPropertyNameFilter)
  }
}

O campo histogram_query tem o formato: COUNT('<item to count>'). Esse campo é repetido, o que permite ter mais de uma consulta de histograma.

O campo require_precise_result_size não foi implementado.

O campo filters é discutido na seção "Filtros".

Histogramas de esquema de documento

É possível criar histogramas de esquema ou tipo de documento adicionando esta consulta de histograma:

  {
    document_query {
      query: "test"
    },
    histogram_queries: [
      {
        histogram_query: "count('DocumentSchemaId')"
      }
    ]
  }

Por exemplo, o mapa dentro de HistogramQueryResult desta consulta seria assim:

  histogramQueryResults: [
    {
      histogramQuery: "DocumentSchemaId",
      histogram:
        {
          "projects/1234/locations/us-west/documentSchemas/5543": "22",
          "projects/1234/locations/us-west/documentSchemas/5544": "2",
          "projects/1234/locations/us-west/documentSchemas/5545": "4",
          "projects/1234/locations/us-west/documentSchemas/5546": "122",
          "projects/1234/locations/us-west/documentSchemas/5547": "256",
          "projects/1234/locations/us-west/documentSchemas/5548": "1",
          "projects/1234/locations/us-west/documentSchemas/5549": "5",
          "projects/1234/locations/us-west/documentSchemas/5550": "15",
        }
    }
  ]

Este exemplo mostra que três esquemas de documentos correspondem à consulta de pesquisa fornecida e o número de documentos por esquema.

Histogramas de propriedades

Os histogramas de propriedades mostram as contagens das propriedades filtráveis especificadas. Os histogramas de propriedades têm o formato:

  COUNT('SomeSchema.SomeProp')

  // Also, you can try with:

  COUNT('SomeSchema.ParentProp.SubProp')

Exemplo de solicitação:

  histogramQueryResults: [
    {
      histogramQuery: "5678.text_prop",
      histogram: {
        some_text: "1",
        More_text: "55",
        Additional_text: "19"
      }
    }
  ]

Esse histograma mostra todos os histogramas de propriedades filtráveis com base no critério HistogramQueryPropertyNameFilter. Isso retorna a contagem do uso da propriedade, e não a contagem dos valores.

O HistogramQueryPropertyNameFilter é definido como:

  {
    "documentSchemas": [
      string
    ],
    "propertyNames": [
      string
    ],
    "yAxis": enum (HistogramYAxis)
  }

É possível limitar os resultados a um conjunto de esquemas de documentos preenchendo o campo repetível chamado document_schemas com até 10 campos schema_ID. As propriedades agregadas podem ser reduzidas usando o campo repetível property_names.

O campo y_axis determina como contar as propriedades. Se não estiver definido ou estiver definido como HISTOGRAM_YAXIS_DOCUMENT, o recurso de histograma vai contar apenas o uso exclusivo da propriedade. Se y_axis for definido como HISTOGRAM_YAXIS_PROPERTY, o histograma vai contar todo o uso da propriedade. Exemplo:

Documento 1: Payments_property: [AMEX, VISA]

Documento 2: Payments_property: [MC]

`HISTOGRAM_YAXIS_DOCUMENT` would return:
  Payments_property: 2
  _Explanation_: The `Payments_property` is found in two documents

`HISTOGRAM_YAXIS_PROPERTY` would return:
  Payments_property: 3
  _Explanation_: The `Payments_property` has three values in the documents found

Confira um exemplo simples de consulta:

  {
    document_query {
    },
    histogram_queries: [
      {
        histogramQuery: "count('FilterableProperties')";
      }
    ]
  }

Confira a seguir um exemplo de resposta à consulta anterior:

  histogramQueryResults: [
    {
      histogramQuery: "FilterableProperties",
      histogram: {
        456.int_prop: "4",
        456.text_prop: "26"
      }
    }
  ]

Para filtrar os resultados de count('FilterableProperties')) por esquemas, consulte a seguinte solicitação:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          document_schemas: [
            "projects/1234/locations/us-west/documentSchemas/678",
            "projects/1234/locations/us-west/documentSchemas/456"
          ]
        }
      }
    ]
  }

Para filtrar os resultados do count('FilterableProperties') por propriedades específicas, consulte a seguinte solicitação:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          property_names: [
            "678.MORTAGE_TYPE",
            "456.language_code"
          ]
        }
      }
    ]
  }

Para conferir a contagem de propriedades de count("FilterableProperties"), mude o y_axis para HISTOGRAM_YAXIS_PROPERTY da seguinte forma:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          y_axis: "HISTOGRAM_YAXIS_PROPERTY"
        }
      }
    ]
  }

Próximas etapas