Un schéma Google Cloud Search est une structure JSON qui définit les objets, les propriétés et les options à utiliser pour l'indexation et l'interrogation des données. Votre connecteur de contenu utilise le schéma enregistré pour structurer et indexer les données du dépôt.
Pour créer un schéma, fournissez un objet de schéma JSON à l'API. Vous devez enregistrer un schéma pour chaque dépôt avant d'indexer les données.
Ce document couvre les bases de la création de schémas. Pour optimiser l'expérience de recherche, consultez Améliorer la qualité de la recherche.
Créer un schéma
Pour créer un schéma Cloud Search, procédez comme suit :
- Déterminer le comportement attendu des utilisateurs
- Initialiser une source de données
- Définir vos objets
- Définir les propriétés des objets
- Enregistrer votre schéma
- Indexer vos données
- Tester votre schéma
- Ajuster votre schéma
Déterminer le comportement attendu des utilisateurs
Anticiper la façon dont les utilisateurs effectuent des recherches vous permet de définir votre stratégie de schéma. Pour une base de données de films, les utilisateurs peuvent rechercher "films avec Robert Redford". Votre schéma doit être compatible avec les requêtes de films avec un acteur spécifique.
Pour aligner votre schéma sur le comportement des utilisateurs :
- Évaluez différentes requêtes de différents utilisateurs.
- Identifiez les ensembles de données logiques, ou objets, tels qu'un "film."
- Identifiez les propriétés (attributs) telles que le titre ou la date de sortie.
- Identifiez les valeurs valides pour les propriétés, telles que "Les Aventuriers de l'arche perdue".
- Déterminez les besoins en matière de tri et de classement, comme l'ordre chronologique ou les notes des spectateurs.
- Identifiez les propriétés de contexte, telles que le rôle professionnel, pour améliorer les suggestions de saisie semi-automatique.
- Répertoriez ces objets, propriétés et exemples de valeurs. Utilisez cette liste pour définir les options d'opérateur.
Initialiser votre source de données
Une source de données représente les données de dépôt indexées stockées dans Google Cloud. Consultez Gérer les sources de données tierces. Lorsqu'un utilisateur clique sur un résultat, Cloud Search le dirige vers l'élément à l'aide de l'URL de la requête d'indexation.
Définir vos objets
L'objet est l'unité fondamentale d'un schéma. Les structures logiques telles que "film" ou "personne" sont des objets. Chaque objet possède des propriétés telles que le titre, la durée ou le nom.
Un schéma est une liste de
définitions d'objet dans la balise objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Utilisez des noms uniques pour chaque objet, par exemple movie. Le service de schéma utilise ces noms comme clés. Consultez
ObjectDefinition.
Définir les propriétés des objets
Définissez des propriétés, telles que le titre et la date de sortie, dans la section propertyDefinitions. Utilisez
options
pour
freshnessOptions
(classement) et
displayOptions
(libellés de l'interface utilisateur).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
Une PropertyDefinition inclut les éléments suivants :
- Une chaîne
name. - Des options non spécifiques au type (par exemple,
isReturnable). - Un type et des options spécifiques au type (par exemple,
textPropertyOptions). operatorOptionspour les opérateurs de recherche.displayOptionspour les libellés de l'interface utilisateur.
Vous pouvez réutiliser les noms de propriétés dans différents objets. Par exemple, movieTitle
peut apparaître à la fois dans un objet movie et dans la filmographie d'un objet person.
Ajouter des options indépendantes du type
PropertyDefinition
inclut des options booléennes permettant de configurer la fonctionnalité de recherche d'une propriété,
quel que soit son type. Ces options sont définies sur false par défaut et doivent être définies sur true pour être utilisées.
isReturnable: définissez cette option surtruesi les données de la propriété doivent être renvoyées dans les résultats de recherche à l'aide de l'API Query. Les propriétés non renvoyables peuvent être utilisées pour la recherche ou le classement sans apparaître dans les résultats.isRepeatable: définissez cette option surtruesi la propriété peut avoir plusieurs valeurs. Par exemple, un film a une date de sortie, mais plusieurs acteurs.isSortable: définissez cette option surtruesi la propriété peut être utilisée pour le tri. Cette option ne peut pas être définie surtruesiisRepeatableest défini surtrueou si la propriété se trouve dans un sous-objet reproductible.isFacetable: définissez cette option surtruesi la propriété peut être utilisée pour générer des facettes (attributs utilisés pour affiner les résultats de recherche).- Cette option nécessite que
isReturnablesoit défini surtrue. - Elle n'est compatible qu'avec les propriétés "Enum", "Boolean" et "Text".
- Cette option nécessite que
isWildcardSearchable: définissez cette option surtruepour permettre aux utilisateurs d'effectuer des recherches génériques sur cette propriété. Cette option n'est disponible que sur les propriétés de texte, et son comportement dépend du paramètreexactMatchWithOperator:- Si
exactMatchWithOperatorest défini surtrue, la valeur de texte est traitée comme un jeton unique. Une requête telle quescience-*correspond à la valeurscience-fiction. - Si
exactMatchWithOperatorest défini surfalse, la valeur de texte est tokenisée. Une requête telle quesci*oufi*correspond àscience-fiction, mais passcience-*.
- Si
Définir le type
Définissez le type de données en définissant l'objet d'options de propriété approprié (par exemple, textPropertyOptions). Utilisez des enums (enumPropertyOptions) si vous connaissez toutes les valeurs possibles. Une propriété ne peut avoir qu'un seul type de données.
Définir les options d'opérateur
operatorOptions décrit le fonctionnement d'une propriété en tant qu'opérateur de recherche.
Chaque operatorOptions nécessite un operatorName (par exemple, title). Il s'agit du
paramètre que les utilisateurs saisissent dans les requêtes (par exemple, title:titanic). Utilisez des noms intuitifs
et exposez-les aux utilisateurs.
Vous pouvez partager un operatorName entre les propriétés du même type. Les requêtes utilisant ce nom récupèrent les résultats de toutes les propriétés correspondantes.
Les propriétés triables peuvent inclure lessThanOperatorName et greaterThanOperatorName pour les requêtes de comparaison. Les propriétés de texte peuvent utiliser exactMatchWithOperator pour traiter l'intégralité de la valeur comme un jeton unique.
Ajouter des options d'affichage
La section facultative displayOptions contient un displayLabel. Il s'agit d'un libellé convivial affiché dans les résultats de recherche.
Ajouter des opérateurs de filtrage des suggestions
Utilisez suggestionFilteringOperators[] pour définir une propriété qui filtre les suggestions de saisie semi-automatique (par exemple, en filtrant les suggestions de films par genre préféré d'un utilisateur). Vous ne pouvez définir qu'un seul filtre de suggestions.
Enregistrer votre schéma
Enregistrez votre schéma auprès du service de schéma à l'aide de l'ID de votre source de données. Émettez une UpdateSchema UpdateSchema :
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Utilisez validateOnly: true pour tester votre schéma sans l'enregistrer.
Indexer vos données
Après l'enregistrement, remplissez la source de données à l'aide d' appels d'index, généralement avec un connecteur.
Exemple de requête d'indexation :
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Tester votre schéma
Effectuez des tests avec un petit dépôt avant la production. Créez une LCA qui limite les résultats à un utilisateur test.
- Requête générique : recherchez une chaîne (par exemple, "titanic") pour afficher tous les éléments correspondants.
- Requête d'opérateur : utilisez un opérateur (par exemple,
actor:Zane) pour limiter les résultats.
Ajuster votre schéma
Surveillez les commentaires des utilisateurs et ajustez votre schéma. Vous pouvez indexer de nouveaux champs ou renommer des opérateurs pour les rendre plus intuitifs.
Réindexer après une modification du schéma
Vous n'avez pas besoin de réindexer pour les modifications apportées aux éléments suivants :
- Noms d'opérateurs
- Limites numériques
- Classement ordonné
- Options d'actualisation ou d'affichage
Vous devez réindexer pour les éléments suivants :
- Ajout ou suppression de propriétés ou d'objets
- Modification de
isReturnable,isFacetableouisSortablesurtrue - Marquage d'une propriété
isSuggestable
Modifications de propriété non autorisées
Les modifications qui interrompent l'index ou entraînent des résultats incohérents ne sont pas autorisées, y compris les suivantes :
- Type de données ou nom de la propriété
- Paramètres
exactMatchWithOperatorouretrievalImportance
Exécuter une modification de schéma complexe
Pour effectuer une modification non autorisée, migrez les propriétés d'une ancienne définition vers une nouvelle :
- Ajoutez une nouvelle propriété avec un nom différent au schéma.
- Enregistrez le schéma avec les propriétés nouvelles et anciennes.
- Remplissez l'index en utilisant uniquement la nouvelle propriété.
- Supprimez l'ancienne propriété du schéma.
- Mettez à jour le code de votre requête pour utiliser le nouveau nom de propriété.
Cloud Search enregistre les éléments supprimés pendant 30 jours pour éviter les problèmes de réutilisation.
Limites de taille
- Maximum de 10 objets de premier niveau
- Profondeur maximale de 10 niveaux
- Maximum de 1 000 champs par objet (y compris les champs imbriqués)
Étapes suivantes
- Créer une interface de recherche.
- Améliorer la qualité de la recherche.
- Structurer un schéma pour une interprétation optimale des requêtes.
- Définir des synonymes.