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 de los usuarios
  2. Inicializa una fuente de datos
  3. Crea un esquema
  4. Esquema de muestra completo
  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 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, 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 una propiedad el contexto en el que se pueden ejecutar las búsquedas, como las búsquedas puesto o departamento, para que se puedan proporcionar sugerencias de autocompletar según el adicional. Por ejemplo, para las personas que buscan una base de datos de películas, los usuarios podrían solo le interesan un determinado género de películas. Los usuarios definirían qué género que desean que devuelvan sus búsquedas, posiblemente como parte de su usuario perfil. Luego, cuando un usuario comienza a escribir una consulta sobre películas, solo películas de su género preferido, como "películas de acción", se sugieren como es parte de las sugerencias de autocompletar.
  7. Hacer una lista de estos objetos, propiedades y valores de ejemplo que se pueden usar en las búsquedas (Para obtener detalles sobre cómo se usa esta lista, consulta la sección Definir 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, consultar 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, uno la estructura lógica de los datos es "película". Otro objeto podría ser "persona". a representar al elenco y al equipo involucrados en 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 ejemplo en el que se muestran dos objetos y un subobjeto.

Un esquema de Cloud Search es esencialmente una lista de declaraciones de definición de objeto definidas dentro del Etiqueta objectDefinitions. En el siguiente fragmento de esquema, se muestra Las sentencias objectDefinitions para los objetos de esquema persona y película

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

Cuando defines un objeto de esquema, proporcionas un name para el objeto que debe ser únicos entre todos los demás objetos del esquema. Por lo general, usarás un name valor que describe el objeto, como movie para un objeto de película. El esquema usa el campo name como identificador de clave para objetos indexables. Para 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 para ObjectDefinition, al nombre del objeto le sigue un conjunto options: y una lista de propertyDefinitions. El options puede constan de freshnessOptions y displayOptions El freshnessOptions se usan para ajustar la clasificación de búsqueda según la actualidad de un artículo. El displayOptions se usan para definir si etiquetas y propiedades específicas se muestran en los resultados de la búsqueda de un objeto.

El propertyDefinitions es donde defines las propiedades de un objeto, como el título de la película. y la fecha de lanzamiento.

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 la versión anterior .
  • Un tipo y sus opciones específicas de tipo asociadas como textPropertyOptions y retrievalImportance en el fragmento anterior.
  • Un elemento operatorOptions que describe cómo se usa la propiedad como 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 vez en el objeto movie y otra vez en el subobjeto filmography del objeto Objeto person. En este esquema, se reutiliza 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 deben en los resultados de la búsqueda a través de la API de consulta. Todas las películas de ejemplo estas propiedades 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 múltiples valores 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 y 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, podemos hacer genre, actorName, userRating y mpaaRating en la faceta para permitirles usarse para definir mejor los resultados de la búsqueda de manera interactiva.
  • isWildcardSearchable indica que los usuarios pueden realizar una búsqueda mediante caracteres comodín esta propiedad. Esta opción solo está disponible en propiedades de texto. Cómo usar el comodín los resultados de búsqueda en el campo de texto dependen del valor establecido en el exactMatchWithOperator. Si exactMatchWithOperator se establece como true, el valor de texto se tokenizó como un valor atómico y se realizar contra él. Por ejemplo, si el valor de texto es science-fiction, una consulta comodín science-* coincide con ella. Si estableces exactMatchWithOperator como false, se asigna un token al valor de texto y se realiza una búsqueda mediante caracteres comodín cada token. Por ejemplo, si el valor de texto es "ciencia ficción", el comodín consulta sci* o fi* coincide con el elemento, pero science-* no lo hace.

Estos parámetros generales de funcionalidad de búsqueda son todos valores booleanos. no todas tienen un valor predeterminado de false y deben configurarse como true que se usará.

En la siguiente tabla, se muestran los parámetros booleanos establecidos en 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 verdadero

Tanto genre como actorName tienen isRepeatable establecido en true porque una película puede pertenecer a más de un género y suele tener a 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

El PropertyDefinition En la sección de referencia, 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 la película title es de tipo texto. En el siguiente fragmento, se muestra la propiedad movieTitle y textPropertyOptions 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 nuestra película esquema, releaseDate solo puede ser una fecha (p.ej., 2016-01-13) o una cadena (p.ej., January 13, 2016), pero no ambos.

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 para 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. Más específicos de los tipos las opciones son opcionales, excepto la lista de possibleValues en el enumPropertyOptions Además, la opción orderedRanking te permite hacer lo siguiente: clasificar valores relacionados entre sí. El El siguiente fragmento muestra la propiedad movieTitle con textPropertyOptions configurando el tipo de datos y con la opción retrievalImportance específica del tipo.

{
  "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 Estas opciones describen cómo se usa la propiedad como de búsqueda. En el siguiente fragmento, se muestra la propiedad movieTitle con textPropertyOptions, que establece el tipo de datos 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 una 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 el usuario escribiría title:movieName, donde 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 "movie" tiene plotSummary y plotSynopsis y cada una de ellas tenía un operatorName de plot. Como siempre que ambas propiedades sean texto (textPropertyOptions), una sola La consulta con el operador de búsqueda plot recupera ambos.

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 establece exactMatchWithOperator en true, la cadena de consulta debe coinciden con todo el valor de la propiedad, no solo deben encontrarse en el 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 exactMatchWithOperator establecido en false u omitido, buscando un género o seleccionando el cuadro "Ciencia" o "Ficción" facet también mostrar resultados de "ciencia ficción" ya que se asignan tokens al texto y “Ciencia” y "Ficción" los tokens existen en “ciencia ficción”. Cuando exactMatchWithOperator sea true, el texto se trata como un token único, por lo que “Ciencia” ni "Ficción" coincide con "ciencia ficción".

Agrega la sección displayOptions (opcional)

Hay una sección opcional displayOptions 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 se configuró para Display y no se definió displayLabel, solo se especifica el valor de la propiedad que se muestra.

En el siguiente fragmento, se muestra la propiedad movieTitle con una displayLabel. establecido en "Título".

{
  "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 de movie. objeto 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)

También hay una suggestionFilteringOperators[] al final de cualquier sección propertyDefinition. Usa esta sección para definir una propiedad que se usa para filtrar sugerencias de autocompletar Por ejemplo, podría definir el operador de genre para filtrar sugerencias según la configuración género de película que prefieras. Luego, cuando el usuario escribe su consulta de búsqueda, solo las las películas que coinciden con su género preferido se muestran como parte del autocompletado sugerencias.

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 realmente lo registra.

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 objeto. nombre de la definición en el esquema. Mediante la coincidencia de estos dos valores, Cloud Search sabe qué objeto de esquema usar durante la indexación.

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

Y 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 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 quieras usar el operador actor para encontrar todas las películas protagonizadas por un actor específico. Con una interfaz de búsqueda, puedes realizar esta consulta con operador con solo escribir un par operator=value, como &quot;actor:Zane&quot; y presiona &quot;actor:Zane&quot;. 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 lo hagas. volver a indexar tus datos. Simplemente puedes enviar un nuevo UpdateSchema solicitud, 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
  • Cambiará isReturnable, isFacetable o isSortable de false a true

Debes configurar isFacetable o isSortable para que sea true solo si tienes una un caso de uso y una necesidad claros.

Por último, cuando marques una propiedad isSuggestable para actualizar tu esquema, debes volver a indexar tus datos, lo que provoca un retraso en el uso del autocompletado de 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
  • Parámetro de configuración de exactMatchWithOperator.
  • Parámetro de configuración de 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 puede lograr con un método UpdateSchema 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 la estructura de un esquema para optimizar la interpretación de consultas.

  4. Aprende a aprovechar la Esquema _dictionaryEntry para definir sinónimos de los términos que se usan comúnmente en su empresa. Para usar _dictionaryEntry consulta, consulta Define sinónimos.

  5. Crea un conector.