La fonctionnalité d'interprétation des requêtes de Cloud Search interprète automatiquement les opérateurs et les filtres dans la requête d'un utilisateur, puis convertit ces éléments en une requête structurée basée sur des opérateurs. L'interprétation des requêtes utilise les opérateurs définis dans le schéma, ainsi que les documents indexés, pour déduire la signification de la requête de l'utilisateur. Cette fonctionnalité permet à l'utilisateur d'effectuer des recherches avec le moins de mots clés possible, 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 est basée sur plusieurs facteurs, y compris l'emplacement des chaînes de requête dans les documents indexés. Une chaîne, telle que le nom de l'acteur "Tom Hanks", qui apparaît systématiquement dans un champ de schéma appelé actors
, permet d'obtenir un niveau de confiance plus élevé. La même chaîne ("Tom Hanks") qui apparaît dans un paragraphe, plutôt que le champ de schéma, peut réduire le niveau de confiance. Dans le cas d'un niveau de confiance élevé, seuls les résultats de l'interprétation des requêtes sont présentés à l'utilisateur. Dans le cas d'une confiance moindre, les résultats de l'interprétation des requêtes sont mélangés avec des résultats de recherche de mot clé normaux.
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 présente un exemple de requête de recherche et son interprétation.

À partir de 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 niveau supérieur dans la source de données sont classés comme
objecttype:movies
. L'interprétation de la requête sait désormais que les "films" dans la requête sont un type d'objet.Analyse les documents de la source de données conjointement avec le schéma pour déterminer l'emplacement de la chaîne "action". Si la chaîne se trouve principalement dans un champ de source de données "genre" spécifique, l'interprétation de la requête a la certitude que "action" est une valeur de propriété pour la propriété "genre" telle que définie dans le schéma. Si la chaîne apparaît principalement dans des paragraphes de contenu, le niveau de confiance de l'interprétation de la requête diminue.
L'interprétation de la requête obtenue 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 aucun travail supplémentaire. Toutefois, pour une interprétation optimale des requêtes, vous devez structurer votre schéma conformément aux instructions de ce document.
Structurer votre schéma de façon à permettre l'interprétation des requêtes
Vous devez structurer votre schéma pour pouvoir bénéficier de l'interprétation des requêtes.
Activer les interprétations de noms à afficher
L'interprétation des requêtes de Cloud Search s'appuie sur les schémas objectDefinitions
et propertyDefinitions
pour interpréter la requête d'un utilisateur et ajuster les résultats. Pour optimiser les avantages de ces éléments de schéma, vous devez créer des noms d'affichage intuitifs en utilisant displayLabel
pour les noms de propriétés, objectDisplayLabel
pour les noms d'objets et operatorName
pour les opérateurs.
Le schéma suivant présente des noms à afficher intuitifs pour un objet de type film:
{
"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 d'objet "film" comporte un
objectDisplayLabel
"film".Le genre propertyDefinition comporte un
operatorName
genre et unedisplayLabel
catégorie.
Ces noms à afficher permettent à Cloud Search d'interpréter les requêtes suivantes:
- "films d'action", "films d'action de genre" ou "films d'action de genre" sont interprétés comme
genre:action object:movies
. - "films avec des films d'action ou des thrillers" est interprété comme
objecttype:movies genre:(action OR thriller)
. - "film d'action" ou "films d'action" sont interprétés 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 date, numériques et de tri
Vous devez définir les valeurs lessThanOperatorName
et greaterThanOperatorName
, spécifiées dans IntegerOperatorOptions
, pour toutes les propriétés numériques et de date. Ces paramètres activent la date et les interprétations numériques automatiques. En outre, pour activer les interprétations de tri, définissez l'option isSortable
pour les propriétés de date et de valeur numérique. Le schéma suivant montre 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.runtimelessthan
etruntimegreaterthan
sont définis pour cette propriété. - La propriété date
releaseDate
fait référence à la sortie d'un film au cinéma. Les propriétésreleasedbefore
etreleasedafter
sont définies pour cette propriété.
Ces paramètres permettent à Cloud Search d'interpréter les requêtes suivantes:
- Supposons que l'année soit en 2019, que les "films sortis cette année" soient interprétés comme
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
. - En supposant qu'il s'agisse de la troisième semaine de mars, les "films sortis la semaine dernière" sont interprétés comme
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
. - Les films dont la durée d'exécution est inférieure à 90 sont interprétés comme
objjecttype: movies runtimelessthan:90
. - Pour l'année 2019, "films sortis cette année et plus de 120 caractères" sont interprétés comme
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - L'option "sort films par date de sortie" est filtrée par "objecttype: movies" et les résultats présentés sont triés par date de sortie, dans l'ordre croissant de tri par défaut.
Activer l'interprétation des opérateurs réservés
Vous pouvez également utiliser les opérateurs intégrés réservés type
, before
, after
et objecttype
pour améliorer l'interprétation des requêtes. Lors de l'indexation d'un document, procédez comme suit:
Renseignez le champ
updateTime
dansItemMetadata
pour utiliser les opérateursbefore
etafter
. Ces paramètres permettent à Cloud Search d'effectuer les interprétations de requête suivantes:- "films de la semaine dernière" répertorie tous les films mis à jour dans l'index la semaine précédente.
- "films avant janv. 2019" permet d'afficher tous les films indexés avant janvier 2019.
Renseignez le champ
mimeType
dansItemMetadata
pour utiliser la détection automatique du type. Une requête "vidéos d'action" répertorie tous les documents de films d'action de type MIME,application/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
etapplication/vnd.google-apps.video
.
Limites d'interprétation des requêtes
La fonctionnalité d'interprétation des requêtes présente les limitations suivantes.
- L'interprétation des requêtes ne fonctionne que pour les LCA de source de données suivantes :
- Tous les documents sont publics (tous les utilisateurs du domaine peuvent y accéder).
- Tous les documents sont des sources de données publiques (toutes les personnes ayant accès à la LCA de la source de données).
- La majorité des documents de la source de données ont la même LCA (tous les documents héritent de la LCA du même élément de conteneur) et aucun lecteur supplémentaire n'est défini.
- Si plusieurs opérateurs de schéma ont la même valeur, l'interprétation de cette valeur à un intent d'opérateur pour une requête dépend du facteur de confiance global renvoyé par le système d'interprétation de requête. Par exemple, supposons que vous ayez les propriétés
priority
etseverity
avec les mêmes noms d'opérateurs définis dans le schéma. Imaginons que les deux opérateurs puissent avoir les valeurs 0, 1, 2 ou 3. Dans cet exemple, "0" peut faire référence à la valeur de l'opérateur pourpriority
ouseverity
. Ces valeurs sont ambiguës et le niveau de confiance est plus faible. - Par défaut, l'interprétation de la requête dans Cloud Search réduit la casse des valeurs de champs lors de l'interprétation de la requête, à l'exception des opérateurs textuels définis avec les 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 de texte libre ne sont pas interprétées. Par exemple, la requête "p0 priority cases severity:s0" ne sera pas acceptée, car "p0 priorité cases" est un terme textuel libre, tandis que "severity:s0" est un terme basé sur un opérateur.
- La stratégie d'interprétation des requêtes combine toujours les résultats interprétés avec les résultats ordinaires (non interprétés, classés par pertinence). Elle ne remplace pas les résultats de la page entière.