Crear y registrar un esquema

Un esquema de Google Cloud Search es una estructura JSON que define los objetos, las propiedades y las opciones que se utilizarán para indexar y consultar tus datos. El conector de contenido lee los datos del repositorio y los estructura e indexa en función del esquema que has registrado.

Si quieres crear un esquema, debes proporcionar un objeto de esquema JSON a la API y, a continuación, registrarlo. Para poder indexar los datos, primero debes registrar un objeto de esquema en cada repositorio.

Crear un esquema

Estos son los pasos que debes seguir para crear el esquema de Cloud Search:

  1. Identificar el comportamiento de usuario esperado
  2. Inicializar una fuente de datos
  3. Crear un esquema
  4. Completar el esquema de muestra
  5. Registrar el esquema
  6. Indexar los datos
  7. Probar el esquema
  8. Perfeccionar el esquema

Identificar el comportamiento de los usuarios esperado

Prever los tipos de consultas que harán tus usuarios puede ayudarte a decidir la estrategia a la hora de crear el esquema.

Por ejemplo, cuando se envían consultas a una base de datos de películas, puedes prever que los usuarios realizarán consultas como "Muéstrame todas las películas protagonizadas por Robert Redford". Por lo tanto, tu esquema deberá admitir resultados de consultas basados en "todas las películas de un actor específico".

Para definir el esquema de forma que refleje los patrones de comportamiento de tus usuarios, te aconsejamos que realices estas tareas:

  1. Evaluar un conjunto de consultas deseadas de diferentes usuarios.
  2. Identificar patrones de propiedades y valores que podrían usarse en las consultas. Las propiedades de un objeto son los atributos indexables de ese objeto y pueden incluir valores primitivos u otros objetos. Por ejemplo, una base de datos de películas podría contener un objeto de película que tendría propiedades (como el título de la película y la fecha de estreno) como valores primitivos e incluir otros objetos (por ejemplo, actores de reparto) que tienen sus correspondientes propiedades, como su nombre o el papel en la película.
  3. Determinar las opciones de ordenación y clasificación deseadas por tus usuarios. Por ejemplo, cuando los usuarios consultan películas, es posible que quieran ordenarlas cronológicamente y clasificarlas según la valoración del público, y no ordenarlas alfabéticamente por su título.
  4. Hacer una lista de estas propiedades y valores que se utilizarán en las búsquedas. Para obtener más información sobre cómo se utilizará esta lista, consulta la sección Definir las opciones del operador.

Inicializar una fuente de datos

Una fuente de datos representa los datos de un repositorio que se han indexado y almacenado en Google Cloud. Para obtener instrucciones sobre cómo inicializar una fuente de datos, consulta la información acerca de cómo gestionar fuentes de datos de terceros.

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

Definir los objetos

La unidad fundamental de los datos de un esquema es el "objeto", que es una estructura lógica de datos. En una base de datos de películas, una estructura lógica de datos es "película". Otro objeto podría ser "persona", que representaría al reparto y al equipo involucrado en la película.

Cada objeto de un esquema tiene una serie de propiedades o atributos que describen el objeto, 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 primitivos u otros objetos.

En la imagen 1 se muestran los objetos "movie" (película) y "person" (persona), y las propiedades asociadas.

Dibujo de conexiones de esquema entre entidades
Imagen 1. Esquema en el que se muestran dos objetos y un subobjeto

Un esquema de Cloud Search es básicamente una lista de declaraciones de definición de objetos incluidas dentro de la etiqueta objectDefinitions. En el siguiente fragmento de esquema se muestran las declaraciones objectDefinitions de los objetos de esquema "movie" (película) y "person" (persona).

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

Cuando defines un objeto de esquema, asignas un elemento name al objeto, que debe ser distinto de todos los demás objetos del esquema. Por lo general, se usa un valor name que describe el objeto, como movie, si se trata de una película. El servicio de esquema utiliza el campo name como un identificador clave de objetos indexables. Para obtener más información sobre el campo name, consulta la definición de objeto.

Definir las propiedades del objeto

Tal como se especifica en la referencia de ObjectDefinition, el nombre del objeto va seguido de un conjunto de elementos options y una lista de propertyDefinitions. Los elementos options pueden incluir freshnessOptions y displayOptions. Los parámetros freshnessOptions se utilizan para ajustar la clasificación de búsqueda según los elementos más actualizados. Los parámetros displayOptions indican si se mostrarán etiquetas y propiedades específicas en los resultados de búsqueda de un objeto.

En la sección propertyDefinitions se definen las propiedades de un objeto, como el título de la película y la fecha del 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"
          }
      ...
      ]
    }
  ]
}

El parámetro PropertyDefinition se compone de estos elementos:

  • Una cadena name
  • Una lista de opciones de tipo agnóstico, como isReturnable en el fragmento anterior
  • Un tipo y sus opciones asociadas específicas, como textPropertyOptions y retrievalImportance en el fragmento anterior
  • Un parámetro operatorOptions que describe cómo se utiliza la propiedad como operador de búsqueda
  • Uno o varios parámetros displayOptions, como displayLabel en el fragmento anterior

El valor name de una propiedad debe ser único dentro del objeto que lo contiene, aunque se puede usar el mismo nombre en otros objetos y subobjetos. En la ilustración 1, el título y la fecha de estreno de la película se han definido dos veces: una en el objeto movie y otra en el subobjeto filmography del objeto person. Este esquema reutiliza el campo movieTitle para permitir dos tipos de comportamientos de búsqueda:

  • Muestra resultados de películas cuando los usuarios buscan el título de una película.
  • Muestra resultados de personas cuando los usuarios buscan el título de una película en la que actuó un determinado actor.

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

Cuando desarrolles tu propio esquema, ten en cuenta si tu repositorio podría tener campos relacionados que contengan datos que quieres declarar más de una vez en el esquema.

Añadir opciones de tipo agnóstico

PropertyDefinition incluye opciones de funciones de búsqueda general que son comunes a todas las propiedades, cualquiera que sea el tipo de datos.

  • isReturnable: indica si la propiedad identifica datos que deben devolverse en los resultados de búsqueda a través de la API Query. En la película de ejemplo, se podrían devolver todas las propiedades de la película. Las propiedades que no se pueden devolver podrían servir para buscar o clasificar resultados que no se muestran a los usuarios.
  • isRepeatable: indica si se pueden asociar varios valores a la propiedad. Por ejemplo, una película solo tiene una fecha de estreno, pero puede tener varios actores.
  • isSortable: indica que la propiedad se puede utilizar para ordenar elementos. No se puede aplicar cuando las propiedades se pueden repetir. Por ejemplo, los resultados de una película pueden ordenarse por la fecha de estreno o por la valoración del público.
  • isFacetable: indica que la propiedad se puede usar para generar facetas. Una faceta se utiliza para acotar los resultados de búsqueda, de forma que el usuario ve los resultados iniciales y, después, añade criterios, o facetas, para afinar aún más los resultados. Esta opción no puede tener el valor "true" con propiedades cuyo tipo sea object, y isReturnable debe tener asignado el valor "true". Finalmente, esta opción solo se admite con las propiedades enum, booleanas y de texto. Por ejemplo, en nuestro esquema, podríamos hacer que genre, actorName, userRating y mpaaRating incluyeran facetas de forma que se puedan utilizar para restringir de forma interactiva los resultados de búsqueda.

Estos parámetros de funciones de búsqueda generales son valores booleanos; todos tienen asignado el valor "false" de forma predeterminada y se les debe asignar el valor "true" para poder utilizarlos.

En la tabla siguiente se muestran los parámetros booleanos con el valor "true" en todas las propiedades del objeto movie:

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

Tanto en genre como actorName se ha asignado el valor "true" al parámetro isRepeatable, ya que una película puede catalogarse en más de un género y generalmente tiene más de un actor. Una propiedad no se puede ordenar si es repetible o está incluida en un subobjeto repetible.

Definir el tipo

En la sección de referencia PropertyDefinition se indican varios parámetros xxPropertyOptions, donde xx es un tipo específico, como boolean. Para definir el tipo de datos de la propiedad, debes utilizar el objeto de tipo de datos adecuado. Un objeto de tipo de datos de una propiedad permite definir su tipo de datos. Por ejemplo, si se define textPropertyOptions en la propiedad movieTitle, se indica que el título de la película es de tipo texto. En el siguiente fragmento se muestra la propiedad movieTitle con el objeto textPropertyOptions, que define el tipo de datos.

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

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

Estos son los objetos de tipo de datos utilizados para especificar los tipos de datos de las propiedades en el esquema de la película de muestra:

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 debes elegir para la propiedad dependerá de cómo preveas que se va a usar. En el caso de este esquema de película, es de esperar que los usuarios querrán ordenar los resultados cronológicamente, por lo que releaseDate es un objeto de fecha. Si, por ejemplo, crees que se utilizará para comparar los estrenos de diciembre y de enero en diferentes años, podría ser útil un formato de cadena.

Configurar opciones específicas de tipo

La sección de referencia PropertyDefinition enlaza con las opciones de cada tipo. La mayoría de las opciones específicas de tipo no son obligatorias, excepto la lista de possibleValues en enumPropertyOptions. Además, la opción orderedRanking permite clasificar los valores relacionándolos unos con otros. En el siguiente fragmento se muestra la propiedad movieTitle con textPropertyOptions, que define el tipo de datos, y con la opción específica de tipo retrievalImportance.

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

Estas son las opciones adicionales específicas de tipo utilizadas en el esquema de muestra:

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

Definir las opciones del operador

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

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

Cada parámetro operatorOptions tiene un operatorName, como title, asignado a 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 los usuarios utilicen cuando limitan una búsqueda. Por ejemplo, para buscar películas por su título, el usuario escribirá title:movieName, donde movieName es el título de la película.

No es necesario que los nombres de los operadores sean iguales al nombre de la propiedad. Sin embargo, es importante que los nombres de operadores sean palabras que los usuarios de tu organización utilizan de forma habitual. Por ejemplo, si los usuarios prefieren el término "nombre" en lugar de "título" para referirse al título de una película, el operador debería ser "nombre".

Puede usar el mismo nombre de operador para varias propiedades siempre que todas ellas se resuelvan en el mismo tipo. Cuando se usa un nombre de operador compartido durante una consulta, se recuperan todas las propiedades que utilizan ese nombre de operador. Por ejemplo, supongamos que el objeto de película tenía las propiedades plotSummary y plotSynopsis, y cada una de ellas tenía un operador operatornName con el nombre plot. Siempre y cuando ambas propiedades sean de texto (textPropertyOptions), se recuperarán mediante una sola consulta que utilice el operador de búsqueda plot.

Además de operatorName, las propiedades que se pueden ordenar pueden incluir los campos lessThanOperatorName y greaterThanOperatorName en operatorOptions. Los usuarios pueden utilizar estas opciones para crear consultas basadas en comparaciones con un valor enviado.

Por último, textOperatorOptions tiene un campo exactMatchWithOperator en operatorOptions. Si asignas el valor true a exactMatchWithOperator, la cadena de consulta deberá coincidir con el valor de la propiedad completa, no solo encontrarse en el texto. El valor de texto se trata como un valor atómico en las búsquedas mediante operadores y las coincidencias de facetas.

Por ejemplo, podrías indexar objetos de libro o película con propiedades de género. Los géneros podrían incluir "ciencia ficción", "ciencia" y "ficción". Si asignas a exactMatchWithOperator el valor false o lo omites, al buscar un género o seleccionar las facetas "ciencia" o "ficción" también se devolverían los resultados para "ciencia ficción", ya que en el texto se utilizan tokens y los tokens "ciencia" y "ficción" están presentes en "ciencia ficción". Cuando exactMatchWithOperator tiene asignado el valor true, el texto se trata como un token único, por lo que ni "ciencia" ni "ficción" coinciden con "ciencia ficción".

Añadir la sección displayOptions

Hay una sección displayOptions opcional al final de cualquier sección propertyDefinition. Esta sección contiene una cadena displayLabel. La cadena displayLabel es una etiqueta de texto recomendada y fácil de usar con la propiedad. Si la propiedad se ha configurado de forma que se muestre con ObjectDisplayOptions, esta etiqueta aparecerá delante de la propiedad. Si la propiedad está configurada para mostrarse y displayLabel no se ha definido, solo se mostrará el valor de la propiedad.

En el siguiente fragmento se muestra la propiedad movieTitle con un parámetro displayLabel al que se ha asignado el valor "title" (título).

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

A continuación se muestran los valores displayLabel de 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

Registrar el esquema

Para que las consultas de Cloud Search devuelvan datos estructurados, debes registrar tu esquema con el servicio de esquema de Cloud Search. Para registrar un esquema necesitarás el ID de la fuente de datos que obtuviste cuando la inicializaste.

Utilizando el ID de la fuente de datos, envía una solicitud UpdateSchema para registrar tu esquema.

Tal como se indica en la página de referencia de UpdateSchema, debes registrarlo enviando la siguiente solicitud HTTP:

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

El cuerpo de esta solicitud debe contener estos elementos:

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

Utiliza la opción validateOnly para probar si el esquema es válido sin registrarlo realmente.

Indexar los datos

Una vez que hayas registrado el esquema, rellena la fuente de datos usando llamadas a Index. Generalmente, la indexación se realiza dentro del conector de contenido.

En el esquema de la película, una solicitud de indexación de la API REST para una sola película sería así:

{
  "name": "datasource/<data_source_id>/items/titanic",
  "acl": {
    "readers": [
      {
        "gsuitePrincipal": {
          "gsuiteDomain": true
        }
      }
    ]
  },
  "metadata": {
    "title": "Titanic",
    "viewUrl": "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 definición de objeto del esquema. Al hacer coincidir estos dos valores, se indica a Cloud Search qué objeto de esquema debe usar durante la indexación.

Observa también cómo la indexación de la propiedad de esquema releaseDate usa las subpropiedades year, month y day, que hereda porque se ha definido como un tipo de datos date mediante el uso de dateProperyOptions. Sin embargo, como year, month y day no se han definido en el esquema, no puedes consultar ninguna de esas propiedades (por ejemplo, year) individualmente.

Por último, fíjate cómo la propiedad repetible actorName se indexa utilizando una lista de valores.

Identificación de posibles problemas de indexación

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

  • La solicitud de indexación contiene un objeto de esquema o un nombre de propiedad que no se registró en el servicio del esquema. Este problema provoca que se omita la propiedad o el objeto.

  • La solicitud de indexación tiene una propiedad con un tipo de valor diferente del que se ha registrado en el esquema. Este problema provoca que Cloud Search devuelva un error al realizar la indexación.

Probar el esquema con varios tipos de consulta

Antes de registrar tu esquema para utilizarlo con un repositorio de datos de producción de gran tamaño, te recomendamos que realices una prueba con uno más pequeño. De esta forma, podrás introducir rápidamente las modificaciones que sean necesarias en el esquema y eliminar los datos indexados, sin que afecte a un índice más grande o que ya esté en producción. Para utilizar un repositorio de datos de prueba, crea una LCA que autorice solo a un usuario, de forma que ninguna otra persona pueda ver estos datos en los resultados de búsqueda.

Para crear una interfaz de búsqueda que permita validar las consultas de búsqueda, consulta el capítulo Interfaz de búsqueda

En esta sección encontrarás varios ejemplos de consultas que puedes usar para probar un esquema de película.

Realizar una prueba con una consulta genérica

Una consulta genérica devuelve todos los elementos de la fuente de datos que contienen una cadena específica. Mediante una interfaz de búsqueda, podrías ejecutar una consulta genérica en una fuente de datos de películas escribiendo la palabra "titanic" y pulsando Intro. En los resultados de búsqueda aparecerán todas las películas que incluyan la palabra "titanic".

Realizar una prueba con un operador

Al añadir un operador a la consulta, los resultados quedan restringidos a los elementos que coincidan con el valor de ese operador. Por ejemplo, podrías usar el operador actor para buscar todas las películas protagonizadas por un determinado actor. Mediante una interfaz de búsqueda, para realizar esta consulta del operador solo tendrías que escribir un par operador=valor, como "actor:Zane", y pulsar Intro. Todas las películas en las que aparezca Zane como actor se devolverán en los resultados de búsqueda.

Perfeccionar el esquema

Una vez que los usuarios estén utilizando el esquema y los datos, sigue supervisándolo para controlar qué está funcionando correctamente y qué no. Deberías ajustar el esquema para usarlo en estas situaciones:

  • Indexar un campo que no se había indexado anteriormente. Por ejemplo, si tus usuarios suelen buscar películas por el nombre del director, podrías ajustar el esquema de forma que admita el nombre del director como operador.
  • Cambiar los nombres de los operadores de búsqueda en función de los comentarios de los usuarios. Los nombres de los operadores deberían ser fáciles de usar. Si tus usuarios "recuerdan" constantemente un nombre de operador incorrecto, quizás deberías cambiar el que utilizas.

Repetir la indexación después de un cambio de esquema

Si cambias cualquiera de los siguientes valores del esquema, no hará falta que vuelvas a indexar los datos. Simplemente, puedes enviar una nueva solicitud de UpdateSchema y tu índice seguirá funcionando:

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

Si realizas cualquiera de los cambios que se indican a continuación, los datos ya indexados seguirán funcionando de acuerdo con el esquema registrado anteriormente. Sin embargo, deberás volver a indexar las entradas existentes para ver los cambios conforme al esquema actualizado si has realizado estos cambios:

  • Añadir o quitar una nueva propiedad u objeto.
  • Cambiar el valor de isReturnable, isFacetable o isSortable de false a true.

Debes asignar a isFacetable o isSortable el valor true solo si se va a usar de forma muy específica y debe responder a una necesidad concreta.

Cambios de propiedad no permitidos

Algunos cambios de esquema no están permitidos, incluso si reindexas los datos, porque dañarían el índice u ofrecerían resultados de búsqueda imprecisos o incoherentes. Algunos de los cambios no permitidos afectan a estos elementos:

  • Tipo de datos de la propiedad
  • Nombre de la propiedad

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

Hacer un cambio de esquema complejo

Para evitar cambios que generen resultados de búsqueda imprecisos o dañen el índice de búsqueda, Cloud Search evita ciertos tipos de cambios en las solicitudes de UpdateSchema una vez que se ha indexado el repositorio. Por ejemplo, el tipo de datos o el nombre de una propiedad no se podrán cambiar después de que se hayan definido. Estos cambios no se pueden obtener a través de una solicitud UpdateSchema sencilla, incluso si se vuelven a indexar los datos.

Si necesitas realizar un cambio en el esquema que no está permitido, con frecuencia podrás hacer una serie de cambios que sí están permitidos y que tienen el mismo efecto. Por lo general, se trataría de migrar primero las propiedades indexadas de una definición de objeto antigua a una nueva y, a continuación, enviar una solicitud de indexación que solo utilice la propiedad nueva.

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

  1. Añade una nueva propiedad a la definición de objeto de tu esquema. Utiliza un nombre diferente de la propiedad que quieres cambiar.
  2. Envía la solicitud UpdateSchema con la nueva definición. Recuerda que debes enviar en la solicitud el esquema completo, que incluya tanto la propiedad nueva como la antigua.
  3. Repón el índice desde el repositorio de datos. Para reponer el índice, envía todas las solicitudes de indexación utilizando la nueva propiedad, pero no la antigua, ya que esto provocaría que se duplicase el recuento de las coincidencias de consultas.

    1. Durante la reposición de la indexación, localiza la propiedad nueva y define como ajuste predeterminado la propiedad antigua para evitar comportamientos incoherentes.
    2. Una vez que se complete la reposición, ejecuta consultas de prueba para comprobar que funciona correctamente.
  4. Elimina la propiedad antigua. Envía otra solicitud UpdateSchema sin el nombre de la propiedad anterior y deja de usar el nombre de la propiedad antigua en futuras solicitudes de indexación.

  5. Migra cualquier elemento que utilizase la propiedad antigua a la nueva propiedad. Por ejemplo, si cambias el nombre de la propiedad de "creador" a "autor", deberás actualizar el código de la consulta de forma que se utilice "autor" en los casos donde anteriormente se utilizaba "creador".

Cloud Search mantiene un registro de las propiedades u objetos eliminados durante 30 días para evitar que se reutilicen y puedan provocar resultados de indexación inesperados. En ese plazo de 30 días, deberás migrar todos los casos en los que se use el objeto o la propiedad eliminados, incluso deberás omitirlos en futuras solicitudes de índice. De esta forma, te aseguras de que si más tarde decides reinstalar esa propiedad u objeto, podrás hacerlo de forma que el índice siga funcionando correctamente.

Información sobre las limitaciones de tamaño

Cloud Search impone estos límites sobre el tamaño de los esquemas y objetos de datos estructurados:

  • El número máximo de objetos de nivel superior es 10.
  • La profundidad máxima de una jerarquía de datos estructurados es de 10 niveles.
  • El número total de campos de un objeto está limitado a 1000, donde se incluyen el número de campos primitivos y la suma del número de campos de cada objeto anidado.

Pasos siguientes

A continuación te indicamos algunos pasos que puedes seguir:

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

  2. Aprende a aprovechar el esquema _dictionaryEntry para definir sinónimos de los términos que se usan habitualmente en tu empresa. Para utilizar el esquema _dictionaryEntry, consulta el capítulo Definir sinónimos.

  3. Crea un conector.