Créer et enregistrer un schéma

Un schéma Google Cloud Search est une structure JSON qui définit des objets, des propriétés et des options à utiliser dans l'indexation et l'interrogation de vos données. Le connecteur de contenu lit les données de votre référentiel et, en fonction de vos schéma enregistré, structure et indexe les données.

Vous pouvez créer un schéma en fournissant un objet de schéma JSON à l'API puis de l'enregistrer. Vous devez enregistrer un objet de schéma pour chacun de vos dépôts avant de pouvoir indexer vos données.

Ce document aborde les principes de base de la création de schémas. Pour savoir comment pour ajuster votre schéma afin d'améliorer l'expérience de recherche, consultez Améliorez la qualité de la recherche.

Créer un schéma

Voici une liste d'étapes à suivre pour créer votre schéma Cloud Search:

  1. Identifier le comportement attendu des utilisateurs
  2. Initialiser une source de données
  3. Créer un schéma
  4. Exemple de schéma complet
  5. Enregistrer votre schéma
  6. Indexer vos données
  7. Tester votre schéma
  8. Régler votre schéma

Identifier le comportement attendu des utilisateurs

Anticiper les types de requêtes de vos utilisateurs vous aide à orienter votre stratégie. pour créer votre schéma.

Par exemple, lors de l'envoi de requêtes à une base de données de films, vous pourriez vous attendre une requête telle que "Montre-moi tous les films avec Robert Redford" par l'utilisateur. Votre schéma doit donc prendre en charge les résultats des requêtes basées sur "tous les films avec un acteur spécifique. »

Pour définir votre schéma de façon à refléter les modèles de comportement de vos utilisateurs, envisagez effectuant ces tâches:

  1. Évaluer un ensemble varié de requêtes souhaitées provenant de différents utilisateurs.
  2. Identifier les objets pouvant être utilisés dans les requêtes. Les objets sont logiques jeux de données liées, tels qu'un film dans une base de données de films.
  3. Identifier les propriétés et les valeurs qui composent l'objet et qui peuvent être utilisées dans les requêtes. Les propriétés désignent les attributs indexables de l'objet. elles peuvent inclure des valeurs primitives ou d'autres objets. Par exemple, un objet "movie" peut comporter des propriétés telles que le titre du film et date de sortie sous forme de valeurs primitives. L'objet "movie" peut également contenir d'autres des objets, tels que les acteurs, qui possèdent leurs propres propriétés, son nom ou son rôle.
  4. Identifiez des exemples de valeurs valides pour les propriétés. Les valeurs correspondent aux données réelles pour une propriété. Par exemple, le titre d'un film dans votre base de données pourrait être "Les Aventuriers de l'Arche perdue".
  5. Déterminez les options de tri et de classement souhaitées par vos utilisateurs. Par exemple, Lorsqu'ils interrogent les films, les utilisateurs peuvent vouloir trier chronologiquement et classer par évaluation du public et n'ont pas besoin de les trier par ordre alphabétique.
  6. (Facultatif) Déterminez si l'une de vos propriétés représente un le contexte dans lequel les recherches peuvent être exécutées, tel que l'état poste ou ce qui permet de proposer des suggestions de saisie semi-automatique en fonction le contexte. Par exemple, pour les personnes recherchant une base de données de films, les utilisateurs pourraient ne s'intéresser qu'à un certain genre de films. Les utilisateurs définiraient ce que genre qu'ils souhaitent voir apparaître dans leurs recherches, peut-être en tant que profil. Ensuite, lorsqu'un utilisateur commence à taper une requête de films, uniquement des films dans leur genre préféré, comme les « films d'action », sont suggérés en tant que des suggestions de saisie semi-automatique.
  7. Dressez la liste des objets, propriétés et exemples de valeurs suivants utilisés dans les recherches. (Pour en savoir plus sur l'utilisation de cette liste, consultez la section Définir les options d'opérateur.)

Initialiser votre source de données

Une source de données représente les données d'un dépôt qui ont été indexées. et stockées dans Google Cloud. Pour savoir comment initialiser une source de données, se référer à Gérer des sources de données tierces

Les résultats de recherche d'un utilisateur sont renvoyés à partir de la source de données. Lorsqu'un utilisateur clique sur un résultat de recherche, Cloud Search redirige l'utilisateur vers l'élément en question à l'aide de l' URL fournie dans la requête d'indexation.

Définir vos objets

L'unité de données fondamentale dans un schéma est l'objet, également appelé "schéma" objet", qui est une structure logique de données. Dans une base de données de films, un la structure logique des données est « movie ». Un autre objet pourrait être "personne". à représentent les acteurs et l'équipe impliqués dans le film.

Chaque objet d'un schéma possède une série de propriétés, ou attributs, qui : décrire l'objet, comme le titre et la durée d'un film, ou le nom et la date de naissance d'une personne. Les propriétés d'un objet peuvent inclure des propriétés des valeurs ou d'autres objets.

La figure 1 présente les objets "movie" (film) et "person" (personne), ainsi que les objets associés propriétés.

Dessin de connexions de schéma entre entités
Figure 1. Exemple de schéma illustrant deux objets et un sous-objet.

Un schéma Cloud Search est essentiellement une liste d'instructions de définition d'objet définies dans Balise objectDefinitions. L'extrait de schéma suivant montre Les instructions objectDefinitions pour les objets de schéma "movie" et "person".

{
  "objectDefinitions": [
    {
      "name": "movie",
      ...
    },
    {
      "name": "person",
      ...
    }
  ]
}

Lorsque vous définissez un objet de schéma, vous fournissez un name pour l'objet qui doit être unique parmi tous les autres objets du schéma. Vous utiliserez généralement un name qui décrit l'objet, par exemple movie pour un objet "movie". Le schéma utilise le champ name comme identifiant de clé pour les objets indexables. Pour Pour en savoir plus sur le champ name, consultez Définition des objets.

Définir les propriétés des objets

Comme indiqué dans la documentation de référence ObjectDefinition, le nom de l'objet est suivi d'une série options, et une liste de propertyDefinitions. La options peut se composent freshnessOptions et displayOptions La freshnessOptions servent à ajuster le classement dans les résultats de recherche en fonction de l'actualisation d'un article. La displayOptions sont utilisés pour déterminer si des libellés et des propriétés spécifiques s'affichent dans les résultats de recherche d'un objet.

La propertyDefinitions permet de définir les propriétés d'un objet, comme le titre du film et sa date de sortie.

L'extrait suivant montre l'objet movie avec deux propriétés: movieTitle et releaseDate.

{
  "objectDefinitions": [
    {
      "name": "movie",
      "propertyDefinitions": [
        {
          "name": "movieTitle",
          "isReturnable": true,
          "isWildcardSearchable": 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"
            }
          },
          "displayOptions": {
            "displayLabel": "Release date"
          }
      ...
      ]
    }
  ]
}

La PropertyDefinition comprend les éléments suivants:

  • Une chaîne name.
  • Une liste d'options indépendantes du type, telles que isReturnable dans les extrait.
  • Un type et ses options spécifiques au type associées comme textPropertyOptions et retrievalImportance dans l'extrait précédent.
  • Un élément operatorOptions décrivant comment la propriété est utilisée un opérateur de recherche.
  • Un ou plusieurs displayOptions, tels que displayLabel dans l'extrait précédent.

Le name d'une propriété doit être unique dans l'objet qui le contient. mais le même nom peut être utilisé dans d'autres objets et sous-objets. Dans la figure 1, le titre et la date de sortie du film ont été définis deux fois: une fois dans l'objet movie et de nouveau dans le sous-objet filmography de person. Ce schéma réutilise le champ movieTitle afin que le schéma puisse accepter deux types de comportements de recherche:

  • Afficher les résultats de films lorsque les utilisateurs recherchent le titre d'un film.
  • Afficher les résultats de personnes lorsque les utilisateurs recherchent le titre d'un film dans lequel a joué un acteur.

De même, le schéma réutilise le champ releaseDate, car il possède la même valeur pour les deux champs movieTitle.

Lorsque vous développez votre propre schéma, réfléchissez à la manière dont votre dépôt aurait pu être lié qui contiennent des données que vous souhaitez déclarer plusieurs fois dans votre schéma.

Ajouter des options indépendantes du type

La PropertyDefinition Répertorie les options générales des fonctionnalités de recherche communes à toutes les propriétés quel que soit le type de données.

  • isReturnable : indique si la propriété identifie les données qui doivent être renvoyées dans les résultats de recherche via l'API Query. Tous les exemples de films peuvent être renvoyées. Les propriétés non renvoyables peuvent être utilisées pour la recherche ni de classement des résultats sans être renvoyés à l'utilisateur.
  • isRepeatable : indique si plusieurs valeurs sont autorisées pour la propriété. Pour Par exemple, un film n'a qu'une seule date de sortie, mais peut avoir plusieurs acteurs.
  • isSortable : indique que la propriété peut être utilisée pour le tri. Ce ne peut pas être "true" pour les propriétés reproductibles. Par exemple, des résultats de films peuvent être triées par date de sortie ou par classification de l'audience.
  • isFacetable : indique que la propriété peut être utilisée pour générer des attributs. Un attribut est utilisé pour affiner les résultats de recherche où l'utilisateur voit les résultats initiaux et ajoute ensuite des critères, ou attributs, pour les affiner davantage résultats. Cette option ne peut pas avoir la valeur "true" pour les propriétés dont le type est "object" et Pour définir cette option, isReturnable doit être défini sur "true". Enfin, cette option n'est disponible compatible avec les propriétés d'énumération, de booléen et de texte. Dans notre exemple de schéma, Ajout d'attributs à genre, actorName, userRating et mpaaRating pour leur permettre de : être utilisée pour affiner de manière interactive les résultats de recherche.
  • isWildcardSearchable indique que les utilisateurs peuvent effectuer une recherche avec caractères génériques cette propriété. Cette option n'est disponible que dans les propriétés de texte. Fonctionnement des caractères génériques fonctionne sur le champ de texte dépend de la valeur définie dans le exactMatchWithOperator. Si exactMatchWithOperator est défini sur true, la valeur textuelle est tokenisée sous la forme d'une valeur atomique et une recherche avec caractère générique est a été effectuée. Par exemple, si la valeur textuelle est science-fiction, une requête générique science-* y correspond. Si exactMatchWithOperator est défini sur false, la valeur de texte est tokenisée et une recherche avec caractères génériques est effectuée sur chaque jeton. Par exemple, si la valeur textuelle est "science-fiction", le caractère générique si la requête sci* ou fi* correspond à l'élément, mais pas science-*.

Ces paramètres de fonctionnalité de recherche générale sont tous des valeurs booléennes. cette ont tous la valeur par défaut false et doivent être définis sur true à utiliser.

Le tableau suivant présente les paramètres booléens définis sur true pour toutes les propriétés de l'objet movie:

Propriété isReturnable isRepeatable isSortable isFacetable isWildcardSearchable
movieTitle true true
releaseDate true true
genre true true true
duration true
actorName true true true true
userRating true true
mpaaRating true true

Pour genre et actorName, isRepeatable est défini sur true car un film peut appartenir à plusieurs genres et possède généralement plusieurs acteurs. Une propriété ne peut pas être triée si elle est reproductible ou contenues dans un sous-objet reproductible.

Définir le type

La PropertyDefinition la section de référence répertorie plusieurs xxPropertyOptions, où xx est un type spécifique, comme boolean. Pour définir le type de données de la propriété, vous devez définir l'objet de type de données approprié. Définir un objet de type de données pour une propriété détermine le type de données de cette propriété. Par exemple, définir textPropertyOptions pour la propriété movieTitle indique que le film title est de type texte. L'extrait suivant montre la propriété movieTitle avec textPropertyOptions définissant le type de données.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    ...
  },
  ...
},

Une propriété ne peut être associée qu'à un seul type de données. Par exemple, dans notre film, schéma, releaseDate ne peut être qu'une date (par exemple, 2016-01-13) ou une chaîne (par exemple, January 13, 2016), mais pas les deux.

Voici les objets de type de données utilisés pour spécifier les types de données pour dans l'exemple de schéma de film:

Propriété Objet de type de données
movieTitle textPropertyOptions
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions
mpaaRating textPropertyOptions

Le type de données que vous choisissez pour la propriété dépend de vos cas d'utilisation prévus. Dans le scénario fictif de ce schéma de films, on s'attend à ce que les utilisateurs pour trier les résultats chronologiquement. releaseDate est donc un objet de date. Si, par exemple, le cas d'utilisation prévu était de comparer les versions de décembre au fil des années avec les sorties de janvier, un format de chaîne peut être utile.

Configurer des options spécifiques au type

La PropertyDefinition la section de référence contient des liens vers les options pour chaque type. Le plus spécifique au type sont facultatives, à l'exception de la liste possibleValues dans enumPropertyOptions De plus, l'option orderedRanking vous permet de : classer les valeurs les unes par rapport aux autres. La l'extrait suivant montre la propriété movieTitle avec textPropertyOptions en définissant le type de données et avec l'option spécifique au type retrievalImportance.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    ...
  },
  ...
}

Voici les options spécifiques au type supplémentaires utilisées dans l'exemple de schéma:

Propriété Type Options spécifiques au type
movieTitle textPropertyOptions retrievalImportance
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions orderedRanking, maximumValue
mpaaRating textPropertyOptions

Définir les options d'opérateur

En plus des options propres au type, chaque type dispose d'un ensemble d'options operatorOptions Ces options décrivent la façon dont la propriété est utilisée un opérateur de recherche. L'extrait suivant montre la propriété movieTitle avec textPropertyOptions définissant le type de données et avec Options spécifiques au type retrievalImportance et operatorOptions.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
      "operatorName": "title"
    }
  },
  ...
}

Chaque operatorOptions possède un operatorName, comme title pour une movieTitle Le nom de l'opérateur est l'opérateur de recherche associé à la propriété. A l'opérateur de recherche est le paramètre réel que les utilisateurs sont censés utiliser pour affiner une recherche. Par exemple, pour rechercher des films en fonction de leur titre, l'utilisateur saisit title:movieName, où movieName est le nom d'un film.

Les noms d'opérateur ne doivent pas nécessairement être identiques au nom de la propriété. À la place, vous devez utiliser des noms d’opérateurs qui reflètent les mots les plus courants utilisés par les utilisateurs de votre organisation. Par exemple, si vos utilisateurs préfèrent le terme "nom" au lieu de "title" pour un titre de film, le nom de l'opérateur doit être défini sur "name".

Vous pouvez utiliser le même nom d'opérateur pour plusieurs propriétés, les propriétés renvoient au même type. Si vous utilisez un nom d'opérateur partagé une requête, toutes les propriétés utilisant ce nom d'opérateur sont récupérées. Par exemple, supposons que l'objet "movie" ait plotSummary et plotSynopsis propriétés. Chacune de ces propriétés présente une valeur operatorName de plot. En tant que tant que ces deux propriétés sont du texte (textPropertyOptions), une seule propriété à l'aide de l'opérateur de recherche plot les récupère tous les deux.

En plus de operatorName, les propriétés pouvant être triées peuvent avoir Champs lessThanOperatorName et greaterThanOperatorName dans operatorOptions. Les utilisateurs peuvent utiliser ces options pour créer des requêtes basées sur des comparaisons avec la valeur envoyée.

Enfin, textOperatorOptions comporte un champ exactMatchWithOperator operatorOptions Si vous définissez exactMatchWithOperator sur true, la chaîne de requête doit correspondent à la valeur entière de la propriété, et pas seulement dans le texte. La valeur textuelle est traitée comme une valeur atomique dans les recherches avec opérateur. des correspondances d'attributs.

Par exemple, envisagez d'indexer les objets "Book" ou "Movie" avec des propriétés de genre. Le genre peut inclure "Science-Fiction", "Science" et "Fiction". Avec exactMatchWithOperator définie sur false ou omise en recherchant un genre ou en sélectionnant l'onglet "Science", ou "Fiction" facette ferait également renvoyer les résultats pour "Science-Fiction" car le texte est tokenisé. "Science" et "Fiction" existent dans "Science-Fiction". Lorsque exactMatchWithOperator est défini sur true, le texte est traité comme un jeton unique. Par conséquent, ni l'un, ni l'autre "Science" ni "Fiction" correspond à "Science-Fiction".

(Facultatif) Ajouter la section displayOptions

Vous trouverez une section displayOptions facultative à la fin de chaque propertyDefinition. Cette section contient une chaîne displayLabel. displayLabel est un libellé de texte recommandé et convivial pour la propriété. Si la propriété est configurée pour l'affichage à l'aide de ObjectDisplayOptions, ce libellé s'affiche devant la propriété. Si la propriété est configurée pour l'affichage et displayLabel n'est pas défini, seule la valeur de la propriété est affiché.

L'extrait suivant montre la propriété movieTitle avec une displayLabel défini sur "Titre".

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
       "operatorName": "title"
    }
},
  "displayOptions": {
    "displayLabel": "Title"
  }
},

Vous trouverez ci-dessous les valeurs displayLabel pour toutes les propriétés de movie. dans l'exemple de schéma:

Propriété displayLabel
movieTitle Title
releaseDate Release date
genre Genre
duration Run length
actorName Actor
userRating Audience score
mpaaRating MPAA rating

(Facultatif) Ajouter une section suggestionFilteringOperators[]

Il existe une option suggestionFilteringOperators[] à la fin de toute section propertyDefinition. Utilisez cette section pour définir une propriété pour filtrer les suggestions de saisie semi-automatique. Par exemple : peut définir l'opérateur genre pour filtrer les suggestions en fonction de l'expérience de l'utilisateur genre de film préféré. Ensuite, lorsque l'utilisateur saisit sa requête de recherche, seuls ceux les films correspondant au genre souhaité s'affichent lors de la saisie semi-automatique. des suggestions.

Enregistrer votre schéma

Pour que des données structurées soient renvoyées par les requêtes Cloud Search, vous devez vous enregistrer votre schéma avec le service de schéma Cloud Search. L'enregistrement d'un schéma nécessite l'ID de la source de données que vous avez obtenu lors de Initialisez une source de données.

À l'aide de l'ID de la source de données, émettez une UpdateSchema pour enregistrer votre schéma.

Comme indiqué dans le UpdateSchema page de référence, envoyez la requête HTTP suivante pour enregistrer votre schéma:

PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema

Le corps de votre requête doit contenir les éléments suivants:

{
  "validateOnly": // true or false,
  "schema": {
    // ... Your complete schema object ...
  }
}

Utilisez l'option validateOnly pour tester la validité de votre schéma sans l'enregistrer réellement.

Indexer vos données

Une fois votre schéma enregistré, remplissez la source de données à l'aide de Indexer appels. L'indexation s'effectue normalement dans le connecteur de contenu.

À l'aide du schéma de film, une requête d'indexation de l'API REST pour un seul film se présente comme suit:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "acl": {
    "readers": [
      {
        "gsuitePrincipal": {
          "gsuiteDomain": true
        }
      }
    ]
  },
  "metadata": {
    "title": "Titanic",
    "sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
    "objectType": "movie"
  },
  "structuredData": {
    "object": {
      "properties": [
        {
          "name": "movieTitle",
          "textValues": {
            "values": [
              "Titanic"
            ]
          }
        },
        {
          "name": "releaseDate",
          "dateValues": {
            "values": [
              {
                "year": 1997,
                "month": 12,
                "day": 19
              }
            ]
          }
        },
        {
          "name": "actorName",
          "textValues": {
            "values": [
              "Leonardo DiCaprio",
              "Kate Winslet",
              "Billy Zane"
            ]
          }
        },
        {
          "name": "genre",
          "enumValues": {
            "values": [
              "Drama",
              "Action"
            ]
          }
        },
        {
          "name": "userRating",
          "integerValues": {
            "values": [
              8
            ]
          }
        },
        {
          "name": "mpaaRating",
          "textValues": {
            "values": [
              "PG-13"
            ]
          }
        },
        {
          "name": "duration",
          "textValues": {
            "values": [
              "3 h 14 min"
            ]
          }
        }
      ]
    }
  },
  "content": {
    "inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
    "contentFormat": "TEXT"
  },
  "version": "01",
  "itemType": "CONTENT_ITEM"
}

Notez que la valeur de movie dans le champ objectType correspond à l'objet du nom de la définition dans le schéma. En faisant correspondre ces deux valeurs, Cloud Search sait l'objet de schéma à utiliser lors de l'indexation.

Notez également que l'indexation de la propriété de schéma releaseDate utilise sous-propriétés de year, month et day, dont elle hérite, car il s'agit défini en tant que type de données date via datePropertyOptions pour le définir. Cependant, comme year, month et day ne sont pas définis dans le schéma, vous ne peuvent pas exécuter de requête sur l'une de ces propriétés (par exemple, year) individuellement.

Notez également que la propriété reproductible actorName est indexée à l'aide d'une liste de valeurs.

Identification des problèmes d'indexation potentiels

Les deux problèmes les plus courants liés aux schémas et à l'indexation sont les suivants:

  • Votre demande d'indexation contient un objet de schéma ou un nom de propriété qui n'était pas enregistré auprès du service de schéma. Ce problème a pour conséquence que la propriété ou l'objet à ignorer.

  • Votre demande d'indexation comporte une propriété dont la valeur de type est différente de celle du type dans le schéma. Ce problème amène Cloud Search à renvoyer une erreur au moment de l'indexation.

Tester votre schéma avec plusieurs types de requêtes

Avant d'enregistrer votre schéma pour un dépôt de données de production volumineux, envisagez d'effectuer les tests dans un dépôt de données de test plus petit. Effectuer un test avec un dépôt de test plus petit vous permet d'ajuster rapidement votre schéma, et supprimer les données indexées, sans que cela n'affecte un index plus important ou un index de production existant. Pour un référentiel de données test, créez Une LCA qui autorise uniquement un utilisateur test, afin que les autres utilisateurs ne puissent pas voir ces données dans les résultats de recherche.

Pour créer une interface de recherche afin de valider des requêtes de recherche, reportez-vous à Interface de recherche

Cette section contient plusieurs exemples de requêtes que vous pouvez utiliser pour tester un schéma de film.

Tester avec une requête générique

Une requête générique renvoie tous les éléments de la source de données contenant . À l'aide d'une interface de recherche, vous pouvez exécuter une requête générique sur un film en saisissant le mot "titanic" et en appuyant sur Entrée. Tout films avec le mot "titanic" doivent figurer dans les résultats de recherche.

Tester avec un opérateur

L'ajout d'un opérateur à la requête limite les résultats aux éléments correspondant à cet . Par exemple, vous pouvez utiliser l'opérateur actor pour rechercher tous les films avec un acteur particulier. À l'aide d'une interface de recherche, vous pouvez effectuer cette requête avec opérateur en saisissant simplement une paire opérateur=valeur, telle que &quot;actor:Zane&quot; et appuyer sur &quot;actor:Zane&quot;. Tous les films avec Zane en tant qu'acteur doivent figurer dans les résultats de recherche.

Régler votre schéma

Une fois votre schéma et vos données utilisés, continuez à surveiller ce qui fonctionne et de ne pas fonctionner pour vos utilisateurs. Vous devez envisager d'ajuster votre schéma dans les situations suivantes:

  • Indexation d'un champ qui n'avait pas encore été indexé. Par exemple, vos utilisateurs peut rechercher plusieurs fois des films en fonction du nom du réalisateur. Par conséquent, Ajustez votre schéma pour prendre en charge le nom du réalisateur en tant qu'opérateur.
  • Modification du nom des opérateurs de recherche en fonction des commentaires des utilisateurs. Les noms d'opérateurs sont censé être convivial. Si vos utilisateurs "se souviennent" régulièrement le mauvais vous pouvez envisager de le modifier.

Réindexation après une modification du schéma

La modification des valeurs suivantes dans votre schéma ne nécessite pas de réindexer vos données. Il vous suffit d'envoyer UpdateSchema et votre index continuera de fonctionner:

  • Noms d'opérateurs.
  • Valeurs entières minimales et maximales.
  • Classement ordonné par entier et par énumération.
  • Options d'actualisation.
  • Options d'affichage

Pour les modifications suivantes, les données précédemment indexées continueront de fonctionner. en fonction du schéma précédemment enregistré. Cependant, vous devez réindexer les entrées existantes pour voir les modifications basées sur le nouveau schéma si ces modifications:

  • Ajout ou suppression d'une propriété ou d'un objet
  • Changer isReturnable, isFacetable ou isSortable en remplaçant false par true

Vous devez définir isFacetable ou isSortable sur true uniquement si vous avez un un cas d'utilisation et un besoin clairs.

Enfin, lorsque vous mettez à jour votre schéma en marquant une propriété isSuggestable, vous devez réindexer vos données, ce qui retarde l'utilisation de la saisie semi-automatique pour cette propriété.

Modifications de propriété non autorisées

Certaines modifications de schéma ne sont pas autorisées, même si vous réindexez vos données, car elles endommageront l'index, ou produiront des résultats de recherche incohérents ou de mauvaise qualité. Ces inclure les modifications apportées aux éléments suivants:

  • Type de données de propriété.
  • Nom de propriété
  • Paramètre exactMatchWithOperator.
  • Paramètre retrievalImportance.

Il existe toutefois un moyen de contourner cette limitation.

Effectuer une modification de schéma complexe

Pour éviter les modifications susceptibles de générer de mauvais résultats de recherche ou d'interrompre la recherche de l'index Google, Cloud Search empêche certains types de modifications UpdateSchema après l'indexation du dépôt. Par exemple, le type de données ou le nom d'une propriété ne peut pas être modifié une fois qu'il a été défini. Ces modifications n'est pas réalisable via une simple UpdateSchema même si vous réindexez vos données.

Dans les cas où vous devez apporter une modification non autorisée à votre vous pouvez effectuer une série de modifications autorisées pour atteindre le même l'effet. En général, cela implique de migrer d'abord les propriétés indexées d'une ancienne définition d'objet à une définition plus récente, puis envoyer une requête d'indexation qui n'utilise que la propriété la plus récente.

Pour modifier le type de données ou le nom d'une propriété, procédez comme suit:

  1. Ajoutez une propriété à la définition d'objet dans votre schéma. Utilisez un autre de la propriété que vous souhaitez modifier.
  2. Émettre le UpdateSchema avec la nouvelle définition. N'oubliez pas d'envoyer le schéma complet, y compris la nouvelle et l'ancienne propriété dans la requête.
  3. Remplissez l'index à partir du dépôt de données. Pour remplir l'index, envoyez de requêtes d'indexation à l'aide de la nouvelle propriété, mais pas ancienne propriété, car cela entraînerait une double comptabilisation des correspondances de requête.

    1. Pendant le remplissage d'indexation, vérifiez la nouvelle propriété par défaut sur l'ancienne propriété pour éviter tout comportement incohérent.
    2. Une fois le remplissage terminé, exécutez des requêtes de test pour vérifier.
  4. Supprimez l'ancienne propriété. Émettre un autre UpdateSchema requête sans l'ancien nom de propriété et cesser d'utiliser l'ancienne propriété dans de futures demandes d'indexation.

  5. Migrez toute utilisation de l'ancienne propriété vers la nouvelle. Par exemple, si si vous modifiez le nom de la propriété et passez de créateur à auteur, vous devez mettre à jour votre requête pour utiliser "author" là où il faisait référence à "creator".

Cloud Search conserve un enregistrement de toute propriété ou de tout objet supprimé pendant 30 jours pour éviter toute réutilisation qui entraînerait des résultats d'indexation inattendus. Pendant ces 30 jours, vous devez cesser d'utiliser les données un objet ou une propriété, y compris en les omettant dans les futures demandes d'index. Ainsi, si vous décidez ultérieurement de rétablir cette propriété ou vous pouvez le faire tout en préservant l'exactitude de votre index.

Connaître les limites de taille

Cloud Search impose des limites à la taille des objets de données structurées et des schémas. Ces limites sont les suivantes:

  • Le nombre maximal d'objets de niveau supérieur est de 10.
  • Une hiérarchie de données structurées peut comporter jusqu'à 10 niveaux.
  • Le nombre total de champs dans un objet est limité à 1000, qui comprend le nombre de champs primitifs plus la somme du nombre de dans chaque objet imbriqué.

Étapes suivantes

Voici quelques étapes que vous pouvez également suivre :

  1. Créer une interface de recherche pour pour tester votre schéma.

  2. Ajustez votre schéma pour améliorer la qualité de la recherche.

  3. Structurez un schéma pour optimiser l'interprétation des requêtes.

  4. Découvrez comment exploiter Schéma _dictionaryEntry pour définir des synonymes pour des termes couramment utilisés dans votre entreprise. Pour utiliser la _dictionaryEntry , consultez Définissez des synonymes.

  5. Créez un connecteur.