Crea y registra un esquema

Un esquema de Google Cloud Search es una estructura JSON que define los objetos, propiedades y opciones que se usarán para indexar y consultar tus datos. Tu conector de contenido lee los datos desde tu repositorio y los estructura y los indexa según tu esquema registrado.

Para registrar un esquema debes proporcionar un objeto de esquema JSON a la API y registrarlo. Debes registrar un objeto de esquema para cada uno de tus repositorios a fin de poder indexar los datos.

En este documento, se incluyen los conceptos básicos de la creación de esquemas. Si quieres obtener información sobre cómo ajustar tu esquema para mejorar la experiencia de búsqueda, consulta Mejora la calidad de búsqueda.

Crea un esquema

A continuación, se muestra una lista de los pasos que debes seguir para crear tu esquema de Cloud Search:

  1. Identifica el comportamiento esperado del usuario.
  2. Inicializa una fuente de datos.
  3. Crea un esquema.
  4. Completa un esquema de muestra.
  5. Registra el esquema.
  6. Indexa los datos.
  7. Prueba el esquema.
  8. Ajusta el esquema.

Identifica el comportamiento esperado del usuario

Prever los tipos de consultas que harán tus usuarios ayuda a orientar tu estrategia para crear el esquema.

Por ejemplo, cuando generes consultas en una base de datos de películas, puedes prever si el usuario realizará una consulta como “Mostrar todas las películas protagonizadas por Robert Redford”. Por lo tanto, tu esquema debe admitir resultados de consultas en función de “todas las películas con un actor específico”.

Si quieres definir tu esquema para que refleje los patrones de comportamiento de tus usuarios, puedes realizar las siguientes tareas:

  1. Evaluar un conjunto diverso de consultas deseadas de diferentes usuarios.
  2. Identificar los objetos que se podrían usar en las consultas. Los objetos son conjuntos lógicos de datos relacionados, como una película en una base de datos de películas.
  3. Identificar las propiedades y los valores que componen el objeto y que se podrían usar en las consultas. Las propiedades son los atributos indexables del objeto; pueden incluir valores básicos o también otros objetos. Por ejemplo, un objeto de película puede tener propiedades como el título de la película y la fecha de estreno como valores básicos. El objeto de película también puede contener otros objetos, como los actores, que además tienen sus propiedades, como su nombre o papel.
  4. Identificar valores de ejemplo válidos para las propiedades. Los valores son los datos reales indexados para una propiedad. Por ejemplo, el título de una película en tu base de datos podría ser “Indiana Jones y los cazadores del arca perdida”.
  5. Determinar las opciones de ordenamiento y clasificación que desean tus usuarios. Por ejemplo, cuando los usuarios consulten películas, es posible que quieran ordenarlas de forma cronológica y clasificarlas por índice de audiencia en lugar de hacerlo alfabéticamente por título.
  6. Hacer una lista de estos objetos, propiedades y valores de ejemplo que se pueden usar en las búsquedas. (Para obtener información sobre cómo se usará esta lista, consulta la sección Define opciones de operador).

Inicializa tu fuente de datos

Una fuente de datos representa los datos de un repositorio que se indexaron y almacenaron en Google Cloud. Para obtener instrucciones sobre cómo inicializar una fuente de datos, consulta la sección sobre cómo administrar fuentes de datos de terceros.

Los resultados de la búsqueda de un usuario se muestran desde la fuente de datos. Cuando un usuario hace clic en un resultado de la búsqueda, Cloud Search lo dirige al elemento real mediante la URL proporcionada en la solicitud de indexación.

Define tus objetos

La unidad de datos fundamental en un esquema es el objeto, también llamado “objeto de esquema”, que es una estructura lógica de datos. En una base de datos de películas, una estructura lógica de datos es “movie”. Otro objeto podría ser “person” para representar al reparto y al equipo de la película.

Cada objeto en un esquema tiene una serie de propiedades o atributos que lo describen, como el título y la duración de una película, o el nombre y la fecha de nacimiento de una persona. Las propiedades de un objeto pueden incluir valores básicos o también otros objetos.

En la Figura 1, se muestran los objetos movie y person, además de las propiedades asociadas.

Dibujo de conexiones de esquema entre entidades
Figura 1. Un esquema de ejemplo que muestra dos objetos y un subobjeto.

Los esquemas de Cloud Search son listas de declaraciones de definiciones de objetos que se determinan dentro de la etiqueta objectDefinitions. En el siguiente fragmento de esquema, se muestran las declaraciones objectDefinitions para los objetos person y movie del esquema.

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

Cuando defines un objeto de esquema, debes proporcionar un name para el objeto que debe ser único entre todos los demás objetos del esquema. Por lo general, usarás un valor name que describa al objeto, como movie para un objeto de película. El servicio de esquema usa el campo name como un identificador de clave para objetos indexables. Para obtener más información sobre el campo name, consulta la sección sobre la definición de objetos.

Define las propiedades de los objetos

Como se especifica en la referencia de ObjectDefinition, al nombre del objeto le sigue un conjunto de options y una lista de propertyDefinitions. Las options pueden consistir en freshnessOptions y displayOptions. Las freshnessOptions se usan para configurar la clasificación de búsqueda en función de la antigüedad de un elemento. Las displayOptions se usan para definir si se muestran etiquetas y propiedades específicas en los resultados de la búsqueda de un objeto.

En la sección propertyDefinitions, debes definir las propiedades de los objetos, como el título de la película o la fecha de estreno.

En el siguiente fragmento, se muestra el objeto movie con dos propiedades: movieTitle y releaseDate.

{
      "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"
                }
              },
              "displayOptions": {
                "displayLabel": "Release date"
              }
          ...
          ]
        }
      ]
    }
    

PropertyDefinition consta de los siguientes elementos:

  • Una string de name
  • Una lista de opciones independientes del tipo, como isReturnable en el fragmento anterior
  • Un tipo y sus opciones específicas asociadas, como textPropertyOptions y retrievalImportance en el fragmento anterior
  • Un valor operatorOptions que describe la forma en que se usa la propiedad como un operador de búsqueda
  • Una o más displayOptions, como displayLabel en el fragmento anterior

El valor name de una propiedad debe ser único dentro del objeto que lo contiene, pero se puede usar el mismo en otros objetos y subobjetos. En la Figura 1, el título de la película y la fecha de estreno se definieron dos veces: una vez en el objeto movie y otra vez en el subobjeto filmography del objeto person. En este esquema, se vuelve a usar el campo movieTitle para poder admitir dos tipos de comportamientos de búsqueda:

  • Mostrar los resultados de la película cuando los usuarios buscan el título de una película
  • Mostrar los resultados de las personas cuando los usuarios buscan el título de una película en la que participó un actor

De manera similar, el esquema vuelve a usar el campo releaseDate porque tiene el mismo significado para los dos campos movieTitle.

Cuando desarrolles tu propio esquema, ten en cuenta de qué manera tu repositorio podría tener campos relacionados que contengan datos que deseas declarar más de una vez en tu esquema.

Agrega opciones independientes del tipo

PropertyDefinition enumera opciones generales de funcionalidad de búsqueda que todas las propiedades tienen en común sin importar el tipo de datos.

  • isReturnable: indica si la propiedad identifica datos que se deben mostrar en los resultados de la búsqueda mediante la API de consulta. Todas las propiedades de la película de ejemplo se pueden mostrar. Es posible usar las propiedades que no se pueden mostrar para buscar o clasificar resultados sin que se muestren al usuario.
  • isRepeatable: indica si se permiten valores múltiples para la propiedad. Por ejemplo, una película tiene solo una fecha de estreno, pero puede tener varios actores.
  • isSortable: indica que la propiedad se puede usar para el ordenamiento. Esto no sucede con las propiedades repetibles. Por ejemplo, los resultados de la película se pueden ordenar por fecha de estreno o índice de audiencia.
  • isFacetable: indica que la propiedad se puede usar para generar facetas. Una faceta se usa para definir mejor los resultados de la búsqueda, mediante los cuales el usuario puede ver los resultados iniciales y, luego, agregar criterios, o facetas, para definir mejor esos resultados. Esta opción no se puede usar con propiedades cuyo tipo es un objeto. isReturnable debe ser verdadera para establecer esta opción. Solo se admite esta opción para las propiedades booleanas, de enumeración y de texto. Por ejemplo, en nuestro esquema de muestra, podríamos hacer que genre, actorName, userRating y mpaaRating se puedan filtrar para permitir que se usen en el perfeccionamiento interactivo de los resultados de la búsqueda.

Estos parámetros de funcionalidad de búsqueda generales son todos valores booleanos; tienen un valor predeterminado de false y se deben configurar como true para usarlos.

En la siguiente tabla, se muestran los parámetros booleanos establecidos como true para todas las propiedades del objeto movie:

Propiedad isReturnable isRepeatable isSortable isFacetable
movieTitle true
releaseDate verdadero verdadero
genre verdadero verdadero verdadero
duration verdadero
actorName verdadero verdadero verdadero
userRating verdadero verdadero
mpaaRating verdadero verdadero

Los valores genre y actorName tienen isRepeatable establecido como true porque una película puede pertenecer a más de un género y suele tener más de un actor. Una propiedad no se puede ordenar si es repetible o se encuentra dentro de un subobjeto repetible.

Define el tipo

En la sección de referencia de PropertyDefinition, se enumeran varias xxPropertyOptions en las que xx es un tipo específico, como boolean. Para establecer el tipo de datos de la propiedad, debes definir el objeto de tipo de datos apropiado. Si se define un objeto de tipo de datos para una propiedad, se establece el tipo de datos de esa propiedad. Por ejemplo, definir textPropertyOptions para la propiedad movieTitle indica que el título de la película es de tipo texto. En el siguiente fragmento, se muestra la propiedad movieTitle en la que textPropertyOptions establece el tipo de datos.

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

Una propiedad puede tener solo un tipo de datos asociado. Por ejemplo, en nuestro esquema de película, releaseDate solo puede ser una fecha (p. ej., 2016-01-13) o una string (p. ej., January 13, 2016), pero no ambas.

A continuación, se muestran los objetos de tipo de datos usados con el fin de especificar los tipos de datos para las propiedades en el esquema de película de ejemplo:

Propiedad Objeto de tipo de datos
movieTitle textPropertyOptions
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions
mpaaRating textPropertyOptions

El tipo de datos que elijas para la propiedad dependerá de los casos prácticos que esperes. En la situación imaginaria de este esquema de película, se espera que los usuarios deseen ordenar los resultados de forma cronológica, por lo que releaseDate es un objeto de fecha. Por ejemplo, si se esperase un caso práctico en el que se comparen los estrenos de diciembre con los estrenos de enero a lo largo de los años, un formato de string podría ser útil.

Configura opciones específicas de los tipos

En la sección de referencia de PropertyDefinition, se proporcionan vínculos a opciones para cada tipo. La mayoría de las opciones específicas de los tipos no son obligatorias, excepto la lista de possibleValues en las enumPropertyOptions. Además, la opción de orderedRanking te permite clasificar valores relacionados entre sí. En el siguiente fragmento de código, se muestra la propiedad movieTitle con la opción textPropertyOptions específica de los tipos y retrievalImportance que establece el tipo de datos.

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

A continuación, se muestran opciones adicionales específicas de los tipos que se usan en el esquema de ejemplo:

Propiedad Tipo Opciones específicas de los tipos
movieTitle textPropertyOptions retrievalImportance
releaseDate datePropertyOptions
genre enumPropertyOptions
duration textPropertyOptions
actorName textPropertyOptions
userRating integerPropertyOptions orderedRanking, maximumValue
mpaaRating textPropertyOptions

Define opciones de operador

Además de las opciones específicas de los tipos, cada tipo tiene un conjunto de operatorOptions opcionales. Estas opciones describen cómo se usa la propiedad como un operador de búsqueda. En el siguiente fragmento, se muestra la propiedad movieTitle con textPropertyOptions, que establece el tipo de datos, y con las opciones retrievalImportance y operatorOptions específicas de los tipos.

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

Cada operatorOptions tiene un operatorName, como title para movieTitle. El nombre del operador es el operador de búsqueda de la propiedad. Un operador de búsqueda es el parámetro real que esperas que usen los usuarios cuando limitan una búsqueda. Por ejemplo, para buscar películas por su título, el usuario debe escribir title:movieName. movieName es el nombre de una película.

No es necesario que los nombres de los operadores sean iguales al nombre de la propiedad. En cambio, debes usar nombres de operadores que reflejen las palabras más comunes que usan los usuarios en tu organización. Por ejemplo, si los usuarios prefieren el término “nombre” en lugar de “título” para el título de una película, entonces el nombre del operador se debe configurar como “nombre”.

Solo puedes usar el mismo nombre de operador para varias propiedades si todas las propiedades se resuelven en el mismo tipo. Cuando se usa un nombre de operador compartido en una consulta, se recuperan todas las propiedades que usan ese nombre. Por ejemplo, supongamos que el objeto de película tiene propiedades plotSummary y plotSynopsis, y cada una de ellas tiene un operatorName de plot. Una consulta única que usa el operador de búsqueda plot recupera las dos propiedades solo si son texto (textPropertyOptions).

Además de operatorName, las propiedades ordenables pueden tener campos lessThanOperatorName y greaterThanOperatorName en operatorOptions. Los usuarios pueden usar estas opciones para crear consultas en función de comparaciones con un valor enviado.

Por último, textOperatorOptions tiene un campo exactMatchWithOperator en operatorOptions. Si estableces exactMatchWithOperator como true, la string de consulta debe coincidir con todo el valor de la propiedad, no se debe encontrar solo dentro del texto. El valor del texto se debe tratar como un valor atómico en las búsquedas de operadores y las coincidencias de facetas.

Por ejemplo, puedes indexar los objetos libro o película con propiedades de género. Los géneros podrían incluir “ciencia ficción”, “ciencia” y “ficción”. Si exactMatchWithOperator está omitido o establecido como false, cuando se busque un género o se seleccione la faceta “ciencia” o “ficción”, también se mostrarán resultados para “ciencia ficción”, ya que el texto tiene tokens asignados y los tokens de “ciencia” y “ficción” existen en “ciencia ficción”. Cuando exactMatchWithOperator es true, el texto se trata como un token único, por lo que “ciencia” y “ficción” no coinciden con “ciencia ficción”.

Agrega la sección displayOptions

Hay una sección displayOptions opcional al final de cualquier sección propertyDefinition. Esta sección contiene una string displayLabel. displayLabel es una etiqueta de texto recomendada y fácil de usar para la propiedad. Si la propiedad está configurada para la visualización con ObjectDisplayOptions, esta etiqueta se muestra delante de la propiedad. Si la propiedad está configurada para la visualización y la etiqueta displayLabel no está definida, solo se muestra el valor de la propiedad.

En el siguiente fragmento, se muestra la propiedad movieTitle con una displayLabel establecida como “Title”.

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

A continuación, se muestran los valores displayLabel para todas las propiedades del objeto movie en el esquema de ejemplo:

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

Registra el esquema

Para que los datos estructurados se muestren en las consultas de Cloud Search, debes registrar tu esquema con el servicio de esquemas de este producto. Para registrar un esquema se necesita el ID de la fuente de datos que obtuviste durante el paso Inicializa tu fuente de datos.

Con el ID de la fuente de datos, genera una solicitud de UpdateSchema para registrar tu esquema.

Como se detalla en la página de referencia de UpdateSchema, genera la siguiente solicitud HTTP para registrar tu esquema:

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

El cuerpo de tu solicitud debe contener lo siguiente:

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

Usa la opción validateOnly para probar la validez de tu esquema sin registrarlo realmente.

Indexa los datos

Una vez que tu esquema esté registrado, propaga la fuente de datos mediante llamadas al índice. Por lo general, la indexación se realiza dentro de tu conector de contenido.

Con el esquema de película, una solicitud de indexación a la API de REST para una sola película se vería de la siguiente manera:

    {
      "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"
    }
    

Observa cómo el valor de movie en el campo objectType coincide con el nombre de la definición de objeto en el esquema. Mediante la búsqueda de coincidencias entre estos dos valores, Cloud Search sabe qué objeto de esquema usar durante la indexación.

También observa cómo la indexación de la propiedad de esquema releaseDate usa subpropiedades de year, month y day que hereda porque se define como un tipo de datos date mediante el uso de dateProperyOptions para definirlo. Sin embargo, debido a que year, month y day no están definidos en el esquema, no puedes realizar consultas en una de esas propiedades (p. ej., year) de forma individual.

También observa cómo la propiedad repetible actorName se indexa mediante una lista de valores.

Identifica problemas potenciales de indexación

Los dos problemas más comunes relacionados con los esquemas y la indexación son los siguientes:

  • Tu solicitud de indexación contiene un objeto de esquema o un nombre de propiedad que no se registraron con el servicio de esquema. Este problema hace que la propiedad o el objeto se ignoren.

  • Tu solicitud de indexación tiene una propiedad con un valor de tipo diferente al tipo registrado en el esquema. Este problema hace que Cloud Search muestre un error en el momento de la indexación.

Prueba el esquema con varios tipos de consultas

Antes de registrar tu esquema en un repositorio de datos de producción grande, considera probarlo en un repositorio de datos de prueba más pequeño. Esto te permite configurar con rapidez tu esquema y borrar los datos indexados, sin afectar un índice más grande o uno de producción existente. En el caso de los repositorios de datos de prueba, crea un LCA que solo autorice a un usuario de prueba para que otros usuarios no vean estos datos en los resultados de la búsqueda.

Si quieres crear una interfaz de búsqueda para validar las búsquedas, consulta la sección sobre la Interfaz de búsqueda.

En esta sección, se proporcionan varias consultas de ejemplo diferentes que puedes usar para probar un esquema de película.

Prueba con una consulta genérica

Una consulta genérica muestra todos los elementos de la fuente de datos que contienen una string específica. Con una interfaz de búsqueda, puedes ejecutar una consulta genérica en una fuente de datos de películas. Por ejemplo, si escribes la palabra “titanic” y presionas Intro, se deben mostrar todas las películas con la palabra “titanic” en los resultados de la búsqueda.

Prueba con un operador

Agregar un operador a una consulta limita los resultados a los elementos que coinciden con ese valor de operador. Por ejemplo, es posible que desees usar el operador actor para buscar todas las películas protagonizadas por un actor específico. En una interfaz de búsqueda, puedes realizar esta consulta con operador si escribes un par operador=valor, como “actor:Zane” y presionas Intro. En los resultados de la búsqueda, se deben mostrar todas las películas en las que actúe Zane.

Ajusta el esquema

Después de comenzar a usar tu esquema y tus datos, supervisa si hay algo que no funciona para tus usuarios. Deberías configurar tu esquema para las siguientes situaciones:

  • Indexar un campo que no se indexó con anterioridad. Por ejemplo, los usuarios pueden buscar varias veces películas por el nombre del director, por lo que podrías configurar tu esquema para que admita el nombre del director como un operador.
  • Cambiar los nombres de los operadores de búsqueda en función de los comentarios de los usuarios. Los nombres de los operadores deben ser fáciles de usar. Si tus usuarios “recuerdan” con frecuencia el nombre de operador incorrecto, tal vez deberías cambiarlo.

Vuelve a indexar después de un cambio de esquema

Para cambiar algunos valores en tu esquema, no es necesario que vuelvas a indexar tus datos. Puedes enviar una solicitud nueva de UpdateSchema y tu índice seguirá en funcionamiento.

  • Nombres de operadores
  • Valores mínimos y máximos de números enteros
  • Clasificación ordenada de números enteros y enumeraciones
  • Opciones de actualización
  • Opciones de visualización

En el caso de los siguientes cambios, los datos ya indexados seguirán en funcionamiento de acuerdo con el esquema registrado con anterioridad. Sin embargo, debes volver a indexar las entradas existentes para ver los cambios en función del esquema actualizado si el esquema tiene los siguientes cambios:

  • Adición o eliminación de una propiedad o un objeto nuevos
  • Cambio de isReturnable, isFacetable o isSortable de false a true

Debes configurar isFacetable o isSortable como true solo si lo necesitas y tienes un caso práctico claro.

Cambios de propiedad no permitidos

Algunos cambios de esquema no están permitidos, incluso si vuelves a indexar tus datos, porque afectarán al índice o producirán resultados de la búsqueda deficientes o incoherentes. Esto incluye cambios en los siguientes aspectos:

  • El tipo de datos de la propiedad
  • El nombre de la propiedad

Sin embargo, hay una manera de evitar esta limitación.

Realiza un cambio de esquema complejo

Para evitar cambios que generen resultados de la búsqueda deficientes o que afecten al índice de la búsqueda, Cloud Search impide ciertos tipos de cambios en solicitudes de UpdateSchema luego de la indexación del repositorio. Por ejemplo, el tipo de datos o el nombre de una propiedad no se pueden cambiar luego de que se establecieron. Estos cambios no se pueden realizar a través de una solicitud de UpdateSchema simple, incluso si vuelves a indexar tus datos.

En situaciones en las que debes realizar un cambio que de otra forma no estaría permitido, por lo general, puedes hacer una serie de cambios permitidos que generen el mismo efecto. En general, esto implica la migración de propiedades indexadas de una definición de objeto más antigua a una más nueva y, luego, el envío de una solicitud de indexación que use solo la propiedad más nueva.

En los siguientes pasos, se muestra cómo cambiar el tipo de datos o el nombre de un objeto:

  1. Agrega una propiedad nueva a la definición de objeto en tu esquema. Usa un nombre diferente de la propiedad que deseas cambiar.
  2. Genera la solicitud de UpdateSchema con la definición nueva. Recuerda enviar el esquema completo en la solicitud, incluidas la propiedad nueva y la antigua.
  3. Reabastece el índice desde el repositorio de datos. Para hacerlo, envía todas las solicitudes de indexación con la propiedad nueva, pero no con la antigua, ya que se contarían dos veces las coincidencias de las consultas.

    1. Durante el reabastecimiento de indexación, verifica la propiedad nueva y usa la propiedad antigua como la predeterminada para evitar comportamientos incoherentes.
    2. Después de que se complete el reabastecimiento, ejecuta consultas de prueba para verificar.
  4. Borra la propiedad antigua. Genera otra solicitud de UpdateSchema sin el nombre de la propiedad antigua y deja de usar ese nombre en las solicitudes de indexación futuras.

  5. Migra cualquier uso de la propiedad antigua a la nueva. Por ejemplo, si cambias el nombre de la propiedad de creador a autor, debes actualizar tu código de consulta para usar autor en la parte que antes hacía referencia a creador.

Cloud Search mantiene un registro de los objetos o propiedades borrados durante 30 días para proteger contra cualquier reutilización que pueda causar resultados de indexación inesperados. Durante esos 30 días, debes dejar de usar los objetos o las propiedades borrados, lo que incluye omitirlos en las solicitudes de indexación futuras. Esto garantiza que si más tarde decides volver a instalar esos objetos o propiedades, lo puedes hacer de una forma que mantenga la precisión de tu índice.

Conoce las limitaciones de tamaño

Cloud Search impone límites en el tamaño de los esquemas y los objetos de datos estructurados. Los límites son los siguientes:

  • El número máximo de objetos de nivel superior es de 10 objetos.
  • La profundidad máxima de una jerarquía de datos estructurados es de 10 niveles.
  • La cantidad total de campos en un objeto está limitada a 1,000, lo que incluye la cantidad de campos básicos y la suma de la cantidad de campos en cada objeto anidado.

Pasos siguientes

Aquí hay algunos pasos que puedes seguir:

  1. Crea una interfaz de búsqueda para probar tu esquema.

  2. Ajusta tu esquema para mejorar la calidad de la búsqueda.

  3. Diseña una estructura para optimizar la interpretación de consultas.

  4. Aprende a aprovechar el esquema _dictionaryEntry con el fin de definir sinónimos para los términos que se suelen usar en tu empresa. Para usar el esquema _dictionaryEntry, consulta Define sinónimos.

  5. Crea un conector.