Crea y registra un esquema

Un esquema de Google Cloud Search es una estructura JSON que define los objetos, las propiedades y las 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 antes de indexar tus 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 la 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. Esquema completo de muestra
  5. Registra tu esquema
  6. Indexa tus datos
  7. Prueba tu esquema
  8. Ajusta tu esquema
.

Identifica el comportamiento esperado del usuario

Prever los tipos de consultas que hacen 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 anticipar que el usuario realizará una consulta como “Muéstrame todas las películas protagonizadas por Robert Redford”. Por lo tanto, tu esquema debe admitir resultados de consultas basados en “todas las películas con un actor específico”.

Si quieres definir tu esquema para que refleje los patrones de comportamiento de tus usuarios, considera 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 proyectos. 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, con 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. Opcional: Considera si una de tus propiedades representa un contexto más específico en el que se pueden ejecutar las búsquedas, como el puesto de trabajo o el departamento de los usuarios, para que se puedan proporcionar sugerencias de autocompletar según el contexto. Por ejemplo, para las personas que buscan una base de datos de películas, es posible que los usuarios solo estén interesados en un género determinado de películas. Los usuarios definirían qué género quieren que muestren sus búsquedas, posiblemente como parte de su perfil de usuario. Luego, cuando un usuario comienza a escribir una consulta de películas, solo se sugieren como parte de las sugerencias de autocompletar las películas de su género preferido, como "películas de acción".
  7. 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 usa 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 Administra 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 dirige al usuario 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 "persona" para representar al elenco 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.

La Figura 1 muestra los objetos película y persona, además de las propiedades asociadas.

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

En esencia, un esquema de Cloud Search es una lista de declaraciones de definición de objetos definidas dentro de la etiqueta objectDefinitions. En el siguiente fragmento de esquema, se muestran las declaraciones objectDefinitions para los objetos de esquema de película y persona.

{
  "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 el 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 Definición del objeto.

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. Además, el options puede incluir freshnessOptions y displayOptions. Los freshnessOptions se usan para ajustar la clasificación de búsqueda en función de la antigüedad de un elemento. Los 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, se definen las propiedades de un objeto, como el título de la película y 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,
          "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"
          }
      ...
      ]
    }
  ]
}

PropertyDefinition consta de los siguientes elementos:

  • una cadena 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 operatorOptions que describe cómo se usa la propiedad como un operador de búsqueda.
  • Uno o más displayOptions, como displayLabel en el fragmento anterior

El name de una propiedad debe ser único dentro del objeto que lo contiene, pero se puede usar el mismo nombre 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 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 que el esquema pueda 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 reutiliza 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 a través de la API de consulta. Todas las propiedades de 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 facets. 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 verdadero para configurar 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 categorizar en facetas para permitir que se usen en el perfeccionamiento interactivo de los resultados de la búsqueda.
  • isWildcardSearchable indica que los usuarios pueden realizar búsquedas con comodines para esta propiedad. Esta opción solo está disponible en las propiedades de texto. La manera en que funciona la búsqueda con comodín en el campo de texto depende del valor configurado en el campo exactMatchWithOperator. Si exactMatchWithOperator se configura como true, se asigna un token al valor de texto como un valor atómico y se realiza una búsqueda con comodín. Por ejemplo, si el valor de texto es science-fiction, una consulta comodín science-* coincide con él. Si exactMatchWithOperator se configura como false, se asigna un token al valor de texto y se realiza una búsqueda con comodines en cada token. Por ejemplo, si el valor de texto es "science-fiction", las consultas de comodines sci* o fi* coinciden con el elemento, pero science-* no lo hace.

Estos parámetros de funcionalidad de búsqueda generales son todos valores booleanos; tienen un valor predeterminado de false y se deben configurar en 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 isWildcardSearchable
movieTitle true true
releaseDate true true
genre true true true
duration true
actorName true true true true
userRating true true
mpaaRating true true

genre y actorName tienen isRepeatable establecido en true, ya que 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 varios xxPropertyOptions en los 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 con textPropertyOptions que establece el tipo de datos.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": 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 opciones.

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 esperaba un caso práctico de la comparación de los estrenos de diciembre con los estrenos de enero a lo largo de los años, un formato de string puede ser útil.

Configura opciones específicas de los tipos

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

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": 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 específicas de los tipos retrievalImportance y operatorOptions.

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

Cada operatorOptions tiene un operatorName, como title para un 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 empleen los usuarios cuando limitan una búsqueda. Por ejemplo, para buscar películas por su título, el usuario debe escribir title:movieName, en el que 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”.

Puedes usar el mismo nombre de operador para varias propiedades solo 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 que se pueden ordenar pueden tener campos lessThanOperatorName y greaterThanOperatorName en operatorOptions. Los usuarios pueden emplear estas opciones para crear consultas en función de comparaciones con un valor enviado.

Por último, textOperatorOptions tiene un campo exactMatchWithOperator en operatorOptions. Si configuras exactMatchWithOperator como true, la cadena de consulta debe coincidir con todo el valor de la propiedad, no solo debe encontrarse dentro del texto. El valor del texto se debe tratar como un valor atómico en las búsquedas de operadores y en 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”. Con la opción exactMatchWithOperator configurada como false u omitida, buscar un género o seleccionar la faceta "Ciencia" o "Ficción" también mostrará resultados para "Ciencia ficción", ya que se asigna un token al texto y los tokens de "Ciencia" y "Ficción" existen en "Ciencia ficción". Cuando exactMatchWithOperator es true, el texto se trata como un único token, por lo que ni "Ciencia" ni "Ficción" coinciden con "Ciencia ficción".

Agrega la sección displayOptions (opcional)

Hay una sección displayOptions opcional al final de cualquier sección propertyDefinition. Esta sección contiene una cadena 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 displayLabel no está definido, solo se muestra el valor de la propiedad.

En el siguiente fragmento, se muestra la propiedad movieTitle con un displayLabel configurado como "Title".

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": 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 muestra:

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

Agrega la sección suggestionFilteringOperators[] (opcional)

Hay una sección opcional suggestionFilteringOperators[] al final de cualquier sección propertyDefinition. Usa esta sección para definir una propiedad que se utiliza para filtrar las sugerencias de autocompletar. Por ejemplo, puedes definir el operador de genre para filtrar las sugerencias según el género de película que prefiere el usuario. Luego, cuando el usuario escriba su búsqueda, solo se mostrarán las películas que coincidan con su género preferido como parte de las sugerencias de autocompletar.

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 Inicializar una 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 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 coincidencia de 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 del esquema releaseDate usa las subpropiedades de year, month y day, que hereda porque se define como un tipo de datos date mediante el uso de datePropertyOptions para definirla. Sin embargo, debido a que year, month y day no están definidos en el esquema, no puedes consultar 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 registró 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 de gran tamaño, considera probarlo en un repositorio de datos de prueba más pequeño. Esto te permite configurar rápidamente el esquema y borrar los datos indexados, sin afectar un índice más grande o uno de producción existente. Para un repositorio de datos de prueba, crea un LCA que solo autorice un usuario de prueba a fin de 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 interfaz de búsqueda.

Esta sección contiene 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 "titanic", 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. Para ello, escribe un par operador=valor, como "actor:Zane" y presiona "actor:Zane". 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 según el nombre del director, por ello, 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 alguno de los siguientes valores en tu esquema, no es necesario que vuelvas a indexar tus datos. Puedes enviar una solicitud nueva de UpdateSchema y tu índice seguirá funcionando:

  • 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

Para los siguientes cambios, los datos indexados con anterioridad continuarán en funcionamiento de acuerdo con el esquema registrado previamente. 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
  • Se cambió isReturnable, isFacetable o isSortable de false a true.

Debes configurar isFacetable o isSortable para que sean true solo si lo necesitas y tienes un caso de uso claro.

Por último, cuando marcas una propiedad isSuggestable para actualizar tu esquema, debes volver a indexar tus datos, lo que provocará una demora en el uso del autocompletado para esa propiedad.

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 lo siguiente:

  • El tipo de datos de la propiedad
  • El nombre de la propiedad
  • exactMatchWithOperator.
  • retrievalImportance.

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 afecten al índice de la búsqueda, Cloud Search impide ciertos tipos de cambios en solicitudes de UpdateSchema una vez indexado el repositorio. Por ejemplo, el tipo de datos o el nombre de una propiedad no se pueden cambiar luego de establecerse. 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 una propiedad:

  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, busca la propiedad nueva y usa la propiedad antigua como la configuración 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 propiedad 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 propiedades borrados además de 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.

Próximos pasos

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. Obtén información sobre cómo aprovechar el esquema _dictionaryEntry para 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.