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, et convertit ces éléments en 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 à un utilisateur d'effectuer une recherche avec un nombre minimal de 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 est basée sur plusieurs facteurs, y compris l'emplacement des chaînes de requête dans les documents indexés. Une chaîne, comme le nom de l'acteur "Tom Hanks", qui apparaît de manière cohérente dans un champ de schéma appelé actors
, génère un niveau de confiance plus élevé. La même chaîne ("Tom Hanks") qui apparaît dans un paragraphe plutôt que dans un champ de schéma peut entraîner une confiance plus faible. En cas de forte confiance, seuls les résultats de l'interprétation de la requête sont affichés à l'utilisateur. En cas de faible confiance, les résultats de l'interprétation de la requête sont mélangés à ceux d'une recherche par mot clé normale.
Exemple d'interprétation de requête
Supposons que vous disposiez d'une source de données, telle qu'une base de données, contenant des informations sur des films. La figure 1 montre un exemple de requête de recherche et l'interprétation qui en résulte.
Pour cet exemple de requête, l'interprétation de la requête se déroule comme suit:
Analyse le schéma et détermine que les objets de niveau supérieur de la source de données sont classés comme
objecttype:movies
. L'interprétation de la requête sait désormais que "films" dans la requête est un type d'objet.Analyse les documents de la source de données, en association avec le schéma, pour déterminer où la chaîne "action" se produit. Si la chaîne apparaît principalement dans un champ de source de données "genre" spécifique, l'interprétation de la requête est sûre que "action" est une valeur de propriété pour la propriété "genre", comme défini dans le schéma. Si la chaîne apparaît principalement dans le contexte de 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 effort 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 pour faciliter l'interprétation des requêtes
Vous devez structurer votre schéma pour vous assurer de pouvoir bénéficier de l'interprétation des requêtes.
Activer les interprétations du nom à 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 ajuster les résultats. Pour maximiser les avantages de ces éléments de schéma, vous devez créer des noms à afficher intuitifs à l'aide de displayLabel
pour les noms de propriétés, de objectDisplayLabel
pour les noms d'objets et de operatorName
pour les opérateurs.
Le schéma suivant montre 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 "film" comporte un
objectDisplayLabel
"Film".La définition de la propriété de genre comporte un
operatorName
"genre" et undisplayLabel
"Catégorie".
Ces noms à afficher permettent à Cloud Search d'interpréter les requêtes suivantes:
- "films d'action", "films de genre action" ou "films de genre action" sont interprétés comme
genre:action object:movies
. - "Films de 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 la date, des nombres et du tri
Vous devez définir lessThanOperatorName
et greaterThanOperatorName
, spécifiés dans IntegerOperatorOptions
, pour toutes les propriétés de date et numériques. Ces paramètres permettent d'interpréter automatiquement les dates et les valeurs numériques. De plus, pour activer les interprétations de tri, définissez l'option isSortable
pour les propriétés de date et numériques. 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é de date
releaseDate
indique la date de sortie d'un film en salle. Les valeursreleasedbefore
etreleasedafter
sont définies 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, "films sortis cette année" est interprété comme
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
. - En supposant que la semaine en question soit 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 dont la durée est inférieure à 90 min" est interprété comme
objjecttype: movies runtimelessthan:90
. - En supposant que l'année soit 2019, "films sortis cette année et d'une durée supérieure à 120" est interprété comme
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - "trier les films par date de sortie" filtrerait sur "objecttype: movies" et les résultats présentés seraient triés par date de sortie, l'ordre de tri par défaut étant croissant.
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. Lorsque vous indexez un document, procédez comme suit:
Remplissez le champ
updateTime
dansItemMetadata
pour utiliser les opérateursbefore
etafter
. Ces paramètres permettent à Cloud Search d'interpréter les requêtes suivantes:- "films de la semaine dernière" liste tous les films qui ont été mis à jour dans l'index la semaine précédente.
- "films avant janvier 2019" liste 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" liste tous les documents de films d'action avec un type mimeapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
etapplication/vnd.google-apps.video
.
Limites de l'interprétation des requêtes
La fonctionnalité d'interprétation des requêtes présente les limites suivantes.
- L'interprétation des requêtes ne fonctionne que pour les LCA de ces sources de données :
- Tous les documents sont publics au niveau du domaine (tout le monde peut y accéder).
- Tous les documents sont publics pour la source de données (toute personne ayant accès à l'ACL 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 en tant qu'intention d'opérateur pour une requête dépend du facteur de confiance global renvoyé par le système d'interprétation des requêtes. 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. Supposons que les deux opérateurs puissent avoir les valeurs 0, 1, 2 ou 3. Dans cet exemple, "0" dans une requête 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 des requêtes de Cloud Search met les valeurs de champ en minuscules, sauf pour les opérateurs de texte 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" n'est pas prise en charge, car "p0 priority cases" est un terme de texte libre, tandis que "severity:s0" est un terme basé sur un opérateur.
- La stratégie d'interprétation des requêtes associe toujours les résultats interprétés aux résultats ordinaires (non interprétés, classés par pertinence). Il n'effectue pas de remplacement complet de la page des résultats.