Structurer un schéma pour une interprétation des requêtes optimale

La fonctionnalité d'interprétation des requêtes de Cloud Search interprète automatiquement et filtres dans la requête de l'utilisateur, puis convertit ces éléments en structurée et basée sur un opérateur. L'interprétation de requête utilise les opérateurs définis dans le schéma, avec les documents indexés, pour déduire ce que de requête moyenne. Cette fonctionnalité permet aux utilisateurs d'effectuer des recherches avec un minimum des mots clés, tout en obtenant des résultats précis.

Les résultats réels présentés à l'utilisateur dépendent du niveau de confiance de l'interprétation de la requête. La confiance dépend de plusieurs facteurs, y compris l'emplacement des chaînes de requête dans les documents indexés. Une chaîne telle que dans le nom de l'acteur "Tom Hanks", apparaître régulièrement dans un de schéma appelé actors a un niveau de confiance plus élevé. La même chaîne ("Tom Hanks") apparaissant dans un paragraphe, et non dans un champ de schéma, peut entraîne une confiance plus faible. Si le niveau de confiance est élevé, seuls les résultats de l'interprétation de la requête sont présentées à l'utilisateur. Dans le cas des mots clés le niveau de confiance, les résultats de l'interprétation de la requête sont combinés dans les résultats de recherche par mot clé.

Exemple d'interprétation de requête

Supposons que vous ayez une source de données, telle qu'une base de données, contenant des informations sur les films. La figure 1 illustre un exemple de requête de recherche et le résultat obtenu. l'interprétation des résultats.

Présentation de l'interprétation des requêtes
Figure 1. Interprétation des requêtes

Pour cet exemple de requête, l'interprétation des requêtes effectue les opérations suivantes:

  • Analyse le schéma et détermine que les objets de premier niveau de la source de données sont classés dans la catégorie objecttype:movies. L'interprétation de requête sait maintenant "films" dans la requête est un type d'objet.

  • Analyse les documents de la source de données, conjointement avec le schéma, pour déterminer où la chaîne "action" se produit. Si la chaîne apparaît principalement dans un "genre" spécifique source de données, puis l'interprétation de la requête a l’assurance que « action » est une valeur de propriété de la propriété "genre" ; comme défini dans le schéma. Si la chaîne apparaît principalement dans le contexte paragraphes de contenu, le niveau de confiance de l'interprétation de la requête diminue.

L'interprétation de la requête qui en résulte est la suivante:

  actor:“tom hanks” genre:action objecttype:movies

L'interprétation des requêtes est automatiquement activée pour tous les clients Cloud Search sans effort supplémentaire. Cependant, pour une interprétation optimale des requêtes, structurez votre schéma en suivant les instructions de ce document.

Structurer votre schéma pour permettre l'interprétation des requêtes

Vous devez structurer votre schéma pour vous assurer vous pouvez bénéficier de l'interprétation des requêtes.

Activer l'interprétation des noms à afficher

L'interprétation des requêtes de Cloud Search utilise objectDefinitions et propertyDefinitions dans un schéma pour interpréter la requête d'un utilisateur et régler résultats. Pour tirer pleinement parti de ces éléments de schéma, vous devez créer des noms à afficher intuitifs displayLabel pour les noms de propriétés, objectDisplayLabel pour les noms d'objets et operatorName pour les opérateurs.

Le schéma suivant illustre des noms à afficher intuitifs pour un objet "movie" :

{
  "objectDefinitions": [
    {
      "name": "movie",
        "options": {
          "displayOptions": {
          "objectDisplayLabel": "Films"
        }
        ...
      },
      "propertyDefinitions": [
        {
          "name": "genre",
          "isReturnable": true,
          "isRepeatable": true,
          "isFacetable": true,
          "textPropertyOptions": {
          "retrievalImportance": { "importance": "HIGHEST" },
          "operatorOptions": {
            "operatorName": "genre"
          }
        },
        "displayOptions": {
          "displayLabel": "Category"
        }
      },
      ...
      ]
    }
  ]
}

Dans l'exemple précédent:

  • La définition de l'objet "movie" comporte un objectDisplayLabel "Film".

  • La propriété PropertyDefinition du genre comporte un operatorName "genre" et une "Category". displayLabel

Ces noms à afficher permettent à Cloud Search d'effectuer la requête suivante interprétations:

  • "films d'action", "films d'action d'un genre" ou "films d'action de genre cinématographique" sont interprétée comme genre:action object:movies.
  • "films avec un genre action ou thriller" est interprété comme objecttype:movies genre:(action OR thriller)
  • "film d'action" ou "films d'action" est interprété comme genre:action objecttype:movies
  • "films de la catégorie comédie" est interprété comme genre:comedy objecttype:movies.

Activer les interprétations de dates, de nombres et de tri

Vous devez définir lessThanOperatorName et greaterThanOperatorName, spécifié dans IntegerOperatorOptions, pour toutes les dates et propriétés numériques. Ces paramètres activent la date et les interprétations numériques. De plus, pour permettre le tri des interprétations, définissez l'option isSortable pour les propriétés de date et numériques. Les éléments suivants : indique comment activer ces options.

{
  "objectDefinitions": [
    {
      "options": {
        "displayOptions": {
          "objectDisplayLabel": "Films"
        }
      },
      "propertyDefinitions": [
        {
          "name": "runtime",
          "isReturnable": true,
          "isSortable": true,
          "integerPropertyOptions": {
            "orderedRanking": "DESCENDING",
            "minimumValue": {
              "value": 10
            },
            "maximumValue": {
              "value": 500
            },
            "operatorOptions": {
              "operatorName": "runtime",
              "lessThanOperatorName": "runtimelessthan",
              "greaterThanOperatorName": "runtimegreaterthan"
            }
          },
          "displayOptions": {
            "displayLabel": "Length"
          }
        },
        {
          "name": "releasedate",
          "isReturnable": true,
          "isSortable": true,
          "datePropertyOptions": {
            "operatorOptions": {
              "operatorName": "releasedate",
              "lessThanOperatorName": "releasedbefore",
              "greaterThanOperatorName": "releasedafter"
            }
          }
        }
      ]
    }
  ]
}

Dans l'exemple précédent:

  • La propriété numérique runtime fait référence à la durée d'un film. La runtimelessthan et runtimegreaterthan sont définis pour cette propriété.
  • La propriété de date releaseDate fait référence à la sortie d'un film au cinémas. Les paramètres releasedbefore et releasedafter sont définis pour cette propriété.

Ces paramètres permettent à Cloud Search d'interpréter les requêtes suivantes:

  • En supposant que l'année soit 2019, les "films sortis cette année" sont interprétés comme objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • En partant du principe que la semaine est la troisième semaine de mars, "films sortis la semaine dernière" est interprété comme objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
  • "films d'une durée inférieure à 90 secondes" est interprété comme objjecttype: movies runtimelessthan:90.
  • En supposant que l’année soit 2019, « les films sortis cette année et leur durée supérieure à 120" est interprété comme releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120.
  • l'option "trier les films par date de sortie" permet de filtrer par "type d'objet: films" et les résultats présentés seraient triés par date de sortie avec l'ordre de tri par défaut dans l'ordre croissant.

Activer l'interprétation d'opérateurs réservés

Vous pouvez également utiliser les bibliothèques intégrées réservées type, before, after et objecttype pour améliorer l'interprétation des requêtes. Lors de l'indexation d'un document, suivantes:

  1. Renseignez le champ updateTime dans ItemMetadata utiliser les opérateurs before et after. Ces permettent à Cloud Search d'interpréter les requêtes suivantes:

    • "films de la semaine dernière" permet d'afficher tous les films mis à jour au cours de la de la semaine précédente.
    • "films antérieurs à janvier 2019" permet d'afficher tous les films indexés avant le mois de janvier 2019. Janvier 2019
  2. Renseignez le champ mimeType dans ItemMetadata pour utiliser la détection automatique de de mots clés. Une requête "vidéos d'action" énumérerait tous les documents de films d'action avec un MIME Type de application/mp4, application/mpeg4, application/x-shockwave-flash video/ et application/vnd.google-apps.video.

Limites concernant l'interprétation des requêtes

La fonctionnalité d'interprétation de requêtes présente les limites suivantes.

  • L'interprétation des requêtes ne fonctionne que pour les LCA de sources de données suivantes:
    • Tous les documents sont publics au sein du domaine (accès par tous les utilisateurs du domaine).
    • Tous les documents sont publics (toutes les personnes ayant accès à la source de données) LCA).
    • La majorité des documents de la source de données ont la même LCA (tous les documents hérite de la LCA du même élément de conteneur) sans qu'aucun lecteur supplémentaire ne soit défini.
  • Si plusieurs opérateurs de schéma ont la même valeur, l'interprétation de la valeur d'un intent d'opérateur pour une requête dépend du niveau de confiance global facteur renvoyé par le système d'interprétation des requêtes. Par exemple, supposons que vous avoir les propriétés priority et severity avec les mêmes noms d'opérateurs ; définies dans le schéma. Supposons que les deux opérateurs puissent avoir les valeurs 0, 1, 2 ou 3. Dans cet exemple, "0" d'une requête peuvent faire référence à la valeur de l'opérateur priority ou severity. Ces valeurs sont ambiguës et le niveau de confiance est moins élevée.
  • Par défaut, l'interprétation des requêtes de Cloud Search réduit la casse du champ lors de l'interprétation de la requête, à l'exception des opérateurs de texte définis avec Options exactMatchWithOperator.
  • L'opérateur source n'est pas compatible avec les requêtes.
  • Les requêtes qui combinent des termes basés sur des opérateurs et des termes en texte libre ne sont pas est interprétée. Par exemple, la requête "p0 priority cases severity:s0" ne ferait pas car "cas prioritaires p0" est un terme en texte libre, tandis que "severity:s0" est un terme basé sur un opérateur.
  • La stratégie d'interprétation des requêtes mélange toujours les résultats interprétés des résultats ordinaires (non interprétés, classés en fonction de la pertinence). Il n'effectue pas de de remplacement de la page des résultats.