L'interprétation des requêtes de Cloud Search convertit automatiquement les opérateurs et les filtres d'une requête utilisateur en 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 de la confiance. La 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). La confiance diminue lorsque les chaînes apparaissent dans une prose générale. Un niveau de confiance élevé n'affiche que les résultats interprétés, tandis qu'un niveau de confiance plus faible les mélange 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 montre un exemple de requête de recherche et son interprétation.
Pour cet exemple, l'interprétation de la requête est la suivante :
- Détermine à partir du schéma que les objets de niveau supérieur sont
objecttype:movies. - Analyse les documents pour identifier où se produit l'action. Si elle apparaît principalement dans un champ
genre, la confiance qu'il s'agit d'une valeur de propriété pour ce champ augmente.
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 du nom à 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 :
- "films d'action" →
genre:action object:movies - "movies with genre action or thriller" (films d'action ou thrillers) ->
objecttype:movies genre:(action OR thriller) - "films de la catégorie comédie" ->
genre:comedy objecttype:movies
Activer les interprétations de date, numérique et de tri
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 :
- "films sortis cette année" ->
objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31 - "movies with runtime less than 90" ->
objecttype:movies runtimelessthan:90
Activer l'interprétation réservée aux opérateurs
Utilisez des opérateurs intégrés tels que type, before, after et objecttype :
- Renseignez
updateTimedansItemMetadatapour utiliserbeforeetafter. - Renseignez
mimeTypedansItemMetadatapour la détection automatique. Par exemple, "action videos" liste les documents avec des types MIME vidéo.
Limites d'interprétation des requêtes
- Cela ne fonctionne que pour les LCA de source de données suivantes :
- Public dans le domaine.
- Source de données publique.
- La majorité des documents partagent la même LCA héritée.
- Noms d'opérateurs partagés (par exemple,
priorityetseverityutilisant tous deux un niveau de confiance inférieur (de 0 à 3). - Par défaut, l'interprétation utilise des minuscules pour les valeurs de champ, sauf si vous utilisez
exactMatchWithOperator. - L'opérateur
sourcen'est pas compatible. - Termes combinés avec des opérateurs et du texte libre (par exemple, "p0 cases severity:s0") ne sont pas interprétées.
- Les résultats sont toujours combinés avec ceux classés par pertinence.