Recherche avancée

Cette section aborde plus en détail les nuances et les sujets avancés de la fonctionnalité de recherche.

Synonymes personnalisés

Document AI Warehouse propose une fonctionnalité appelée "Synonymes personnalisés", qui permet aux clients de fournir leurs propres synonymes pour leurs domaines spécifiques. Comme son nom l'indique, un synonyme est un mot similaire utilisé lors de la recherche. Si l'utilisateur effectue une recherche sur "télévision", les synonymes suivants peuvent être ajoutés de manière transparente à l'insu de l'utilisateur : "TV", "moniteur vidéo", "écran vidéo". Les termes de recherche d'origine de l'utilisateur et les synonymes seront utilisés pour effectuer la requête de recherche.

Cette fonctionnalité permet d'étendre la recherche d'un utilisateur et de renvoyer les résultats attendus. L'utilisation typique inclut les termes, acronymes, jargon et expressions propres à l'entreprise ou au secteur.

Synonym, Context et SynonymSet

Document AI Warehouse introduit trois termes majeurs pour la personnalisation des synonymes :

  • Synonym. Un synonyme représente un ensemble de mots ayant tous une signification similaire.

  • Context. Un contexte représente un groupe d'utilisateurs (par exemple, des utilisateurs d'un secteur, d'une division ou d'une organisation) qui ont des synonymes spécifiques qui ne sont pas utilisés par d'autres groupes. Par exemple, les services des finances et de la santé utilisent probablement un SynonymSet complètement différent. Les contextes peuvent être spécifiés dans le champ queryContext de l'API Search. Ainsi, l'utilisation de différents contextes pour les mêmes termes de requête de recherche peut donner des résultats de recherche différents.

  • SynonymSet. Un SynonymSet est un ensemble de synonymes pour un contexte spécifique.

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

Exemple d'utilisation

SynonymSet avec le contexte "finance"

"Devise","Change","dollar","euro"​​,"yen"
"Inflation","IPC","expansion économique","boom économique","hausse des prix"
"IRS","Internal Revenue Service","US Treasury"
"Déclaration de revenus","1040","1120","1099","W-2"

Dans l'exemple précédent, lorsque l'utilisateur recherche "Devise" et que le queryContext est "finance", les autres synonymes de cette ligne (c'est-à-dire "Change", "dollar", "euro", "yen") sont ajoutés implicitement à la requête de recherche. De même, si l'utilisateur recherche un terme de cette ligne, tous les autres termes sont ajoutés à la requête finale. En reprenant le même exemple, si l'utilisateur recherche "euro", les termes "Devise", "Change", "dollar" et "yen" sont ajoutés à la requête finale.

SynonymSet avec le contexte "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"

Rechercher avec l'extension de synonymes personnalisés

Lorsque les clients souhaitent rechercher des documents avec une expansion de synonymes personnalisée, ils doivent spécifier un ou plusieurs query_context. Vous pouvez consulter la documentation dans l'API SearchDocuments.

Comme son nom l'indique, folder search n'effectue des recherches que dans un dossier particulier et ses sous-dossiers.

Voici un exemple de requête de recherche :

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

Histogrammes

Les histogrammes sont une fonctionnalité avancée qui agrège les nombres sur des données spécifiées. Par exemple, combien de documents de chaque schéma correspondent à la requête de l'utilisateur ? Pour une base de données gouvernementale, si l'utilisateur recherche "Orange County", un histogramme de schéma de données peut renvoyer le nombre de permis de conduire, de certificats de mariage ou d'actes correspondant aux critères de recherche. Les histogrammes respectent les autorisations d'accès aux données de l'utilisateur demandeur. Par conséquent, seuls les documents auxquels l'utilisateur demandeur a accès sont comptabilisés.

Les histogrammes peuvent être une ressource puissante. Cependant, la collecte et l'agrégation de toutes les données prennent du temps.

Les histogrammes ne sont pas affectés par les champs de pagination de la requête de recherche.

Format général de requête d'histogramme

La requête HistogramQuery est définie comme suit :

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

Le champ histogram_query est au format suivant : COUNT('<item to count>'). Il s'agit d'un champ répété, ce qui vous permet d'avoir plusieurs requêtes d'histogramme.

Le champ require_precise_result_size n'est pas implémenté.

Le champ filters est abordé dans la section Filtres.

Histogrammes de schéma de document

Vous pouvez créer des histogrammes de schéma ou de type de document en ajoutant cette requête d'histogramme :

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

Par exemple, la carte dans HistogramQueryResult de cette requête se présenterait comme suit :

  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",
        }
    }
  ]

Cet exemple montre que trois schémas de document correspondent à la requête de recherche donnée, et indique le nombre de documents par schéma de document.

Histogrammes de propriétés

Les histogrammes de propriétés affichent le nombre de propriétés filtrables spécifiées. Les histogrammes de propriétés sont au format suivant :

  COUNT('SomeSchema.SomeProp')

  // Also, you can try with:

  COUNT('SomeSchema.ParentProp.SubProp')

Voici un exemple de requête :

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

Cet histogramme affiche tous les histogrammes de propriétés filtrables en fonction du critère HistogramQueryPropertyNameFilter. Cette fonction renvoie le nombre d'utilisations de la propriété (et non le nombre de valeurs).

La HistogramQueryPropertyNameFilter est définie comme suit :

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

Vous pouvez limiter les résultats à un ensemble de schémas de document en remplissant le champ répétable appelé document_schemas avec jusqu'à 10 champs schema_ID. Les propriétés agrégées peuvent éventuellement être réduites à l'aide du champ répétable property_names.

Le champ y_axis détermine comment comptabiliser les propriétés. Si elle n'est pas définie ou si elle est définie sur HISTOGRAM_YAXIS_DOCUMENT, la fonctionnalité d'histogramme ne compte que l'utilisation de la propriété unique. Si y_axis est défini sur HISTOGRAM_YAXIS_PROPERTY, l'histogramme comptabilise toutes les utilisations de la propriété. Exemple :

Document 1 : Payments_property: [AMEX, VISA]

Document 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

Voici un exemple de requête simple :

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

Voici un exemple de réponse à la requête précédente :

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

Pour filtrer les résultats count('FilterableProperties')) par schémas, consultez la requête suivante :

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

Pour filtrer les résultats count('FilterableProperties') pour des propriétés spécifiques, consultez la requête suivante :

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

Pour afficher le nombre de propriétés pour count("FilterableProperties"), remplacez y_axis par HISTOGRAM_YAXIS_PROPERTY comme suit :

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

Étapes suivantes