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

L'interprétation des requêtes Cloud Search convertit automatiquement les opérateurs et les filtres d'une requête utilisateur en une requête structurée basée sur des opérateurs. Cette fonctionnalité utilise les opérateurs définis dans le schéma et les documents indexés pour déduire l'intention de la requête. Les utilisateurs peuvent ainsi effectuer des recherches avec un minimum de mots clés et obtenir des résultats précis.

La présentation des résultats dépend du niveau de confiance. Le niveau de confiance augmente lorsque les chaînes de requête apparaissent de manière cohérente dans des champs de schéma spécifiques (par exemple, "Tom Hanks" dans un champ actors). Le niveau de confiance diminue lorsque les chaînes apparaissent dans un texte général. Un niveau de confiance élevé n'affiche que les résultats interprétés, tandis qu'un niveau de confiance plus faible les combine avec les résultats de mots clés standards.

Exemple d'interprétation de requête

Prenons l'exemple d'une base de données contenant des informations sur des films. La figure 1 présente un exemple de requête de recherche et son interprétation.

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

Pour cet exemple, l'interprétation de la requête :

  • détermine à partir du schéma que les objets de premier niveau sont objecttype:movies ;
  • analyse les documents pour identifier où apparaît le terme "action". S'il apparaît principalement dans un champ genre, le niveau de confiance augmente, car il s'agit d'une valeur de propriété pour ce champ.

L'interprétation obtenue est la suivante : actor:"tom hanks" genre:action objecttype:movies

L'interprétation des requêtes est automatique pour tous les utilisateurs, mais vous pouvez l'optimiser en structurant votre schéma comme décrit dans les sections suivantes.

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

L'optimisation de votre schéma vous permet de bénéficier de l'interprétation des requêtes.

Activer les interprétations des noms à afficher

L'interprétation des requêtes utilise objectDefinitions et propertyDefinitions pour interpréter les requêtes. Créez des noms à afficher intuitifs à l'aide de displayLabel pour les propriétés, objectDisplayLabel pour les objets et operatorName pour les opérateurs.

Cet exemple montre des noms à afficher intuitifs pour un objet de film :

{
  "objectDefinitions": [{
    "name": "movie",
    "options": {
      "displayOptions": { "objectDisplayLabel": "Films" }
    },
    "propertyDefinitions": [{
      "name": "genre",
      "isReturnable": true,
      "textPropertyOptions": {
        "operatorOptions": { "operatorName": "genre" }
      },
      "displayOptions": { "displayLabel": "Category" }
    }]
  }]
}

Ces noms à afficher permettent des interprétations telles que :

  • "action movies" -> genre:action object:movies
  • "movies with genre action or thriller" -> objecttype:movies genre:(action OR thriller)
  • "comedy category movies" -> genre:comedy objecttype:movies

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

Définissez lessThanOperatorName et greaterThanOperatorName dans IntegerOperatorOptions pour toutes les propriétés de date et numériques. Pour activer le tri, définissez isSortable.

Cet exemple active les options suivantes :

{
  "objectDefinitions": [{
    "propertyDefinitions": [
      {
        "name": "runtime",
        "isSortable": true,
        "integerPropertyOptions": {
          "operatorOptions": {
            "operatorName": "runtime",
            "lessThanOperatorName": "runtimelessthan",
            "greaterThanOperatorName": "runtimegreaterthan"
          }
        }
      },
      {
        "name": "releasedate",
        "isSortable": true,
        "datePropertyOptions": {
          "operatorOptions": {
            "operatorName": "releasedate",
            "lessThanOperatorName": "releasedbefore",
            "greaterThanOperatorName": "releasedafter"
          }
        }
      }
    ]
  }]
}

Ces paramètres permettent des interprétations telles que :

  • "movies released this year" -> objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31
  • "movies with runtime less than 90" -> objecttype:movies runtimelessthan:90

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

Utilisez des opérateurs intégrés tels que type, before, after, et objecttype :

  1. Renseignez updateTime dans ItemMetadata pour utiliser before et after.
  2. Renseignez mimeType dans ItemMetadata pour la détection automatique. Par exemple, "action videos" liste les documents avec des types MIME vidéo.

Limites de l'interprétation des requêtes

  • Ne fonctionne que pour les LCA de source de données suivantes :
    • Public dans le domaine.
    • Public dans la source de données.
    • La majorité des documents partagent la même LCA héritée.
  • Les noms d'opérateurs partagés (par exemple, priority et severity utilisant tous deux 0-3) réduisent le niveau de confiance.
  • Par défaut, l'interprétation utilise des minuscules pour les valeurs de champ, sauf si vous utilisez exactMatchWithOperator.
  • L'opérateur source n'est pas compatible.
  • Les termes combinés d'opérateur et de texte libre (par exemple, "p0 cases severity:s0") ne sont pas interprétés.
  • Les résultats sont toujours combinés avec les résultats classés par pertinence.