Mejorar la calidad de búsqueda

Calidad de búsqueda hace referencia a la calidad de los resultados de las búsquedas en términos de clasificación y recuperación, tal como la percibe el usuario que realiza la consulta.

Clasificación hace referencia al orden de los elementos y recuperación, a la cantidad de elementos relevantes recuperados. Un elemento (también denominado documento) es cualquier pieza de contenido digital que Google Cloud Search puede indexar. Entre los tipos de elementos, se incluyen documentos de Microsoft Office, archivos PDF, una fila en una base de datos, URL únicas, etcétera. Un elemento se compone de lo siguiente:

  • Metadatos estructurados
  • Contenido indexable
  • LCA

Cloud Search utiliza una variedad de indicadores para recuperar y clasificar los resultados de las consultas de búsqueda, es decir, los elementos resultantes de una consulta de búsqueda. Puedes influir en los indicadores de Cloud Search mediante la configuración del esquema, el contenido y los metadatos del elemento (durante la indexación), y la aplicación de búsqueda. El objetivo de este documento es ayudarte a mejorar la calidad de las búsquedas mediante la modificación de estos factores de influencia en los indicadores.

Para obtener un resumen de la configuración recomendada y opcional, consulta Resumen de la configuración recomendada y opcional de la calidad de búsqueda.

Influir en la puntuación de novedad

Novedad hace referencia a la relevancia de un resultado de la búsqueda respecto de los términos de la consulta original. La novedad de un elemento se calcula sobre la base de los siguientes criterios:

  • La importancia de cada término de la consulta
  • La cantidad de hits (el número de veces que el término de una búsqueda aparece en los metadatos o el contenido del elemento).
  • El tipo de coincidencias que el término de la búsqueda y sus variantes tienen con un elemento indexado en Cloud Search

Para influir en la puntuación de novedad de una propiedad de texto, define la RetrievalImportance en la propiedad de texto de tu esquema. Una coincidencia en una propiedad con alta RetrievalImportance da como resultado una puntuación más alta en comparación con una coincidencia en una propiedad con baja RetrievalImportance.

Por ejemplo, supón que tienes una fuente de datos con las siguientes características:

  • La fuente de datos se utiliza para almacenar el historial de errores de software.
  • Cada error tiene un nombre, una descripción y una prioridad.

La mayoría de los usuarios buscarían esta fuente de datos mediante el uso del nombre del error, por lo que establecerías la RetrievalImportance en el nombre como HIGHEST en el esquema.

A la inversa, es posible que la mayoría de los usuarios no busquen esta fuente de datos mediante el uso de la descripción del error, por lo tanto, establece la RetrievalImportance en la descripción como DEFAULT. A continuación, se muestra un esquema de ejemplo que contiene la configuración de RetrievalImportance.

{
      "objectDefinitions": [
        {
          "name": "issues",
          "propertyDefinitions": [
            {
              "name": "summary",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": HIGHEST
                  }
                }
              },
            {
              "name": "description",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": DEFAULT
                  }
                }
              },
            {
              "name": "label",
                "isRepeatable": true,
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": DEFAULT
                  }
                }
              },
            {
              "name": "comments",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": DEFAULT
                  }
                }
              },
            {
              "name": "project",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": HIGH
                  }
                }
              },
            {
              "name": "duedate",
              "datePropertyOptions": {
              }
            },
            ...
          ]
        }
      ]
    }
    

En el caso de los documentos HTML, las etiquetas, como <title> y <h1>, junto con la configuración de formato, como el tamaño de fuente y el texto en negrita, se utilizan para determinar la importancia de varios términos. Si el ContentFormat es TEXT, ItemContent tiene la importancia de recuperación DEFAULT. Si el contenido es HTML, su importancia de recuperación se determina según las propiedades HTML.

Influir en la actualidad

La actualidad permite medir qué tan recientemente un elemento se modificó y se determina a partir de las propiedades createTime, updateTime en la ItemMetadata. Los elementos más actuales registran una mejor clasificación.

Es posible influir en la forma de calcular la actualidad de los objetos. Para ello, debes ajustar freshnessProperty y freshnessDuration en las FreshnessOptions del esquema.

La freshnessProperty te permite usar una fecha o propiedades de marca de tiempo para calcular la actualidad en lugar del updateTime predeterminado.

En nuestro ejemplo anterior de un sistema de seguimiento de errores de software, la fecha de vencimiento se podría usar como freshnessProperty, de modo que los elementos con una fecha de vencimiento más cercana a la fecha actual se consideren "más actuales" y registran una mejor clasificación. A continuación, se muestra un esquema de muestra que contiene la configuración de freshnessProperty:

{
      "objectDefinitions": [
        {
          "name": "issues",
          "options": {
            "freshnessOptions": {
              "freshnessProperty": "duedate"
            }
          },
          "propertyDefinitions": [
            {
              "name": "summary",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": HIGHEST
                }
              }
            },
            {
              "name": "duedate",
              "datePropertyOptions": {
              }
            },
            ...
          ]
        }
      ]
    }
    

Usa la freshnessDuration para identificar el momento en el que un elemento se considera desactualizado. Por ejemplo, puedes tener una fuente de datos que no se indexa regularmente o para la cual no quieres que la actualidad influya en la clasificación. Para ello, debes especificar un valor alto para la freshnessDuration.

Supón que tienes una fuente de datos con información de perfil del empleado. En esta situación, es posible que quieras una freshnessDuration alta dado que los cambios en la información del empleado a menudo no son relevantes para la clasificación del empleado. A continuación, se presenta un esquema de muestra que contiene la configuración de freshnessDuration:

{
      "objectDefinitions": [
        {
          "name": "people",
          "options": {
            "freshnessOptions": {
              "freshnessDuration": "315360000s", # 100 years
            }
          },
        }
      ]
    }
    

También puedes configurar la freshnessDuration en un valor muy bajo para las fuentes de datos cuyo contenido cambia rápidamente, como una fuente de datos que contiene artículos de noticias. En esta situación, los documentos creados o modificados más recientemente son los más relevantes. A continuación, se presenta un esquema de muestra que contiene la configuración de freshnessDuration para una fuente de datos con contenido dinámico:

{
      "objectDefinitions": [
        {
          "name": "news",
          "options": {
            "freshnessOptions": {
              "freshnessDuration": "259200s", # 3 days
            }
          },
        }
      ]
    }
    

Influir en la calidad

Calidad es una medición de la exactitud y utilidad de un elemento. Una fuente de datos puede contener varios documentos con una semántica similar, cada uno con un nivel de calidad diferente. Puedes especificar un valor de calidad de entre 0 y 1 mediante SearchQualityMetadata. Los elementos con valores más altos registran una mejor clasificación en relación con los elementos con valores más bajos. Usa esta configuración solo si necesitas influir en la calidad de un elemento, o mejorarla, más allá de la información proporcionada a Cloud Search.

Por ejemplo, supón que tienes una fuente de datos que contiene documentos sobre beneficios para empleados. Podrías usar SearchQualityMetadata para mejorar la clasificación de los documentos que crean los empleados de Recursos Humanos con respecto a los documentos que crean otros empleados.

A continuación, se presenta un esquema de muestra que contiene la configuración de SearchQualityMetadata para problemas en un sistema de seguimiento de errores:

{
      "name": "datasources/.../items/issue1",
      "acl": {
        ...
      },
      "metadata": {
        "title": "Issue 1"
        "objectType": "issues"
      },
      ...
    }

    {
      "name": "datasources/.../items/issue2",
      "acl": {
        ...
      },
      "metadata": {
        "title": "Issue 2"
        "objectType": "issues"
        "searchQualityMetadata": {
          "quality": 0.5
        }
      },
      ...
    }

    {
      "name": "datasources/.../items/issue3",
      "acl": {
        ...
      },
      "metadata": {
        "title": "Issue 3"
        "objectType": "issues"
        "searchQualityMetadata": {
          "quality": 1
        }
      },
      ...
    }
    

Dado este esquema, cuando un usuario realiza una búsqueda con el término "problema", al problema 3 en el esquema (calidad de 1) se le asigna una clasificación más alta que al problema 2 (calidad de 0.5) y al problema 1 (si no se especifica nada, la calidad predeterminada es 0).

Influir mediante el tipo de campo

Cloud Search te permite influir en la clasificación según el valor de las propiedades de enumeraciones o números enteros. Para cada propiedad de número entero o enumeración, se puede especificar una OrderedRanking. Esta configuración tiene los siguientes valores:

  • NO_ORDER (predeterminado): la propiedad no afecta la clasificación.
  • ASCENDING: los elementos con valores más altos de esta propiedad de número entero o enumeración registran una mejor clasificación en comparación con los elementos con valores más bajos.
  • DESCENDING: los elementos con valores más bajos de la propiedad de número entero o enumeración registran una mejor clasificación en comparación con los elementos con valores más altos.

Por ejemplo, supongamos que cada error en un sistema de seguimiento de errores tiene una propiedad de enumeración para almacenar la prioridad del error como HIGH (1), MEDIUM (2) o LOW (3). En esta situación, la configuración de una OrderedRanking como DESCENDING mejorará la clasificación de la prioridad HIGH en comparación con los errores de prioridad LOW. A continuación, se presenta un esquema de muestra que contiene la configuración de OrderedRanking para los problemas de un sistema de seguimiento de errores:

{
      "objectDefinitions": [
        {
          "name": "issues",
          "options": {
            "freshnessOptions": {
              "freshnessProperty": "duedate",
            }
          },
          "propertyDefinitions": [
            {
              "name": "summary",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": HIGHEST
                }
              }
            },
            {
              "name": "duedate",
              "datePropertyOptions": {
              }
            },
            {
              "name": "priority",
              "enumPropertyOptions": {
                "possibleValues": [
                  {
                    "stringValue": "HIGH",
                    "integerValue": 1
                  },
                  {
                    "stringValue": "MEDIUM",
                    "integerValue": 2
                  },
                  {
                    "stringValue": "LOW",
                    "integerValue": 3
                  }
                ],
                "orderedRanking": DESCENDING,
              }
            },

            ...
          ]
        }
      ]
    }
    

Un sistema de seguimiento de errores también podría tener una propiedad de número entero llamada votes, que se utiliza para recopilar comentarios de los usuarios sobre la importancia relativa de un error. Puedes usar la propiedad votes para influir en la clasificación si otorgas una importancia mayor a los errores que tienen más votos. En este caso, puedes especificar OrderedRanking como ASCENDING para la propiedad votes, de manera que los problemas con más votos registran una mejor clasificación. A continuación, se presenta un esquema de muestra que contiene la configuración de OrderedRanking para los problemas de un sistema de seguimiento de errores:

{
      "objectDefinitions": [
        {
          "name": "issues",
          "propertyDefinitions": [
            {
              "name": "summary",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": HIGHEST
                }
              }
            },
            {
              "name": "description",
              "textPropertyOptions": {
                "retrievalImportance": {
                  "importance": DEFAULT
                }
              }
            },
            {
              "name": "votes",
              "integerPropertyOptions": {
                "orderedRanking": ASCENDING,
                "minimumValue": 0,
                "maximumValue": 1000,
              }
            },

            ...
          ]
        }
      ]
    }
    

Influir en la clasificación a través de la búsqueda expandida

Búsqueda expandida hace referencia a la expansión de los términos en la consulta, mediante sinónimos y ortografía, para obtener mejores resultados.

Usar sinónimos para influir en los resultados de la búsqueda

Cloud Search utiliza sinónimos inferidos de contenido web público para expandir los términos de la búsqueda. También puedes definir sinónimos personalizados para captar la terminología específica de la organización, como las siglas comunes utilizadas en una organización o la terminología específica del sector.

Los sinónimos personalizados se pueden definir dentro de una fuente de datos o como una fuente de datos separada. Los sinónimos personalizados se aplican a todas las aplicaciones de búsqueda en un dominio, independientemente del lugar en el que se defina el sinónimo. Para obtener información sobre la definición de sinónimos personalizados, consulta Define sinónimos.

Usar ortografía para influir en los resultados de la búsqueda

Cloud Search proporciona sugerencias de ortografía basadas en modelos creados con los datos públicos de Búsqueda de Google. Si Cloud Search detecta una falta de ortografía en el contexto de una búsqueda, mostrará la consulta sugerida en el SpellResult. La ortografía sugerida se puede mostrar al usuario como una sugerencia. Por ejemplo, el usuario podría escribir incorrectamente el término de búsqueda "empleado" y recibir la sugerencia "¿Quiso decir empleado?".

Cloud Search también usa correcciones de ortografía como sinónimos para ayudar a recuperar documentos que de otra manera podrían perderse debido a un error de ortografía.

Influir en la clasificación a través de la configuración de la aplicación de búsqueda

Como se mencionó en la Introducción a Google Cloud Search, una aplicación de búsqueda es un grupo de configuraciones que, cuando se asocian con una interfaz de búsqueda, brindan información contextual sobre las búsquedas. La siguiente configuración te permite influir en la clasificación a través de la aplicación de búsqueda:

  • Configuración de puntuación
  • Configuración de la fuente

En las siguientes dos secciones se explica cómo puede ayudar esta configuración a influir en la clasificación.

Ajustar la configuración de la puntuación

Para cada aplicación de búsqueda, puedes especificar una ScoringConfig, que se utiliza para controlar la aplicación de algunos indicadores durante la clasificación. Por el momento, puedes inhabilitar la actualidad y la personalización.

Si se inhabilita la actualización, se inhabilita para todas las fuentes de datos enumeradas en la aplicación de búsqueda, independientemente de las opciones de actualización especificadas en el esquema para la fuente de datos. De manera similar, si se inhabilita la personalización, la mejora del propietario y de la interacción no afecta la clasificación.

Para obtener instrucciones paso a paso sobre esta configuración, consulta Crear una experiencia de búsqueda personalizada.

Ajustar la configuración de la fuente

La configuración de la fuente te permite especificar los ajustes de nivel de la fuente de datos en una aplicación de búsqueda. Se admite la configuración para lo siguiente:

  • Importancia de la fuente
  • Multiplicidad

Establecer la importancia de la fuente

Importancia de la fuente hace referencia a la importancia relativa de la fuente de datos dentro de una aplicación de búsqueda. Esta configuración se puede especificar en el campo SourceImportance de SourceScoringConfig. Los elementos de una fuente de datos con una importancia de la fuente HIGH registran una mejor clasificación en comparación con los elementos de una fuente de datos con una importancia de la fuente de DEFAULT o LOW. Usa esta configuración para influir en la clasificación cuando creas que los usuarios preferirían los resultados de ciertas fuentes de datos.

Por ejemplo, supón que tienes un portal de asistencia del producto que contiene datos de solución de problemas internos y externos. En esta situación, es posible que quieras configurar tu aplicación de búsqueda para priorizar los resultados de la fuente de datos interna.

Para obtener instrucciones paso a paso sobre esta configuración, consulta Crear una experiencia de búsqueda personalizada.

Configurar la multiplicidad

Multiplicidad hace referencia a la cantidad máxima de resultados que se pueden mostrar a partir de una fuente de datos en una aplicación de búsqueda. Este valor se puede controlar con el campo numResults de SourceCrowdingConfig. El valor predeterminado es 3, lo que significa que, si hemos mostrado tres resultados de una fuente de datos, Cloud Search comienza a presentar resultados de otras fuentes de datos. Los elementos de la primera fuente de datos se reconsideran solo si todas las fuentes de datos alcanzaron su límite de multiplicidad o si no hay más resultados de otras fuentes de datos.

Esta configuración es útil para garantizar la diversidad de los resultados de la búsqueda y evitar que una fuente de datos domine la página de resultados de la búsqueda.

Para obtener instrucciones paso a paso sobre esta configuración, consulta Crear una experiencia de búsqueda personalizada.

Influir en la clasificación a través de la personalización

Personalización hace referencia a la presentación de resultados personalizados de la búsqueda basados en el usuario individual que accede al resultado. Puedes influir en la clasificación si concedes prioridad a los elementos según los siguientes criterios:

  • Propiedad del elemento
  • Interacción del elemento
  • Idioma del elemento

Las siguientes tres secciones explican cómo influir en la calidad de la búsqueda según estos criterios.

Influir en la clasificación en función de la propiedad del elemento

La propiedad del elemento se refiere a mejorar la clasificación de los elementos que pertenecen al usuario que realiza la búsqueda. Cada elemento tiene una ItemAcl con un campo owners. Si el usuario que ejecuta una búsqueda es el propietario de un elemento, entonces, de forma predeterminada, ese elemento registra una mejor clasificación. Puedes desactivar la personalización en la aplicación de búsqueda.

Mejorar la clasificación en función de la interacción del elemento

La Interacción del elemento se refiere a mejorar la clasificación de los elementos con los que el usuario de la búsqueda interactuó (visto, comentado, editado, etc.).

Los indicadores de interacción de los elementos se obtienen automáticamente para productos de G Suite como Drive, Gmail, etcétera. Para otros productos, puedes proporcionar datos de la interacción a nivel del elemento, incluido el tipo de interacción (ver o editar), la marca de tiempo de la interacción y el principal (usuario que interactuó con el elemento). Ten en cuenta que los elementos con interacciones recientes registran una mejora de clasificación más alta.

Influir en la clasificación mediante la interpretación de consultas

La función de interpretación de búsquedas de Cloud Search interpreta de manera automática los operadores y filtros presentes en las consultas de los usuarios y los convierte en una consulta estructurada basada en operadores. La interpretación de búsquedas usa operadores definidos en el esquema junto con los documentos indexados para deducir el significado de las consultas de los usuarios. Esta función permite que los usuarios obtengan resultados precisos incluso si usan una cantidad mínima de palabras clave en sus búsquedas. Si quieres obtener más información, consulta Diseña la estructura de un esquema para optimizar la interpretación de búsquedas.

Mejorar la clasificación en función del idioma del elemento

Idioma se refiere a reducir la clasificación de los elementos cuyo idioma no coincida con el idioma de la búsqueda. Lo siguiente afecta la clasificación de los elementos según el idioma:

  • El languageCode especificado en las RequestOptions
  • El idioma detectado automáticamente de la consulta de búsqueda
  • El idioma del elemento (contentLanguage de los ItemMetadata o el idioma detectado automáticamente, en ese orden)

Si el idioma de la consulta y el elemento coinciden, no se aplica el descenso de clasificación del idioma. Si esta configuración no coincide, entonces el elemento desciende de nivel.

Resumen de la configuración de la calidad de búsqueda recomendada y opcional

La siguiente tabla enumera todas las configuraciones de calidad de búsqueda recomendadas y opcionales. Estas recomendaciones deberían ayudarte a sacar el máximo beneficio de los modelos de clasificación de Cloud Search.

ConfiguraciónUbicaciónRecomendada/opcionalDetalles
Configuración de esquema
Campo ItemContentItemContentRecomendadaCuando crees o actualices tu esquema, propaga el contenido no estructurado de un elemento. Este campo se utiliza para generar fragmentos de código.
Campo RetrievalImportanceRetrievalImportanceRecomendadaCuando crees o actualices un esquema, configúralo para las propiedades de texto que son claramente importantes o de actualidad.
FreshnessOptionsFreshnessOptionsOpcionalCuando crees o actualices un esquema, configúralo para garantizar que los elementos no desciendan debido a datos incorrectos o casos en los que faltan datos.
Configuración de indexación
createTime/updateTimeItemMetadataRecomendadaPropaga durante la indexación de un elemento.
Campo ownersItemAcl()RecomendadaPropaga durante la indexación de un elemento.
Sinónimos personalizadosEsquema de _dictionaryEntryRecomendadaDefine a nivel de la fuente de datos o como fuente de datos separada durante la indexación.
Campo qualitySearchQualityMetadataOpcionalPara proporcionar un aumento de calidad base en comparación con otros elementos semánticamente similares, establece la calidad durante la indexación. La configuración de este campo para todos los elementos en una fuente de datos anula su efecto.
Datos de interacción a nivel del elementointeractionOpcionalSi la fuente de datos registra y proporciona acceso a las interacciones del usuario, propaga las interacciones para cada elemento durante la indexación.
Propiedades de números enteros/enumeracionesOrderedRankingOpcionalCuando el orden de los elementos es relevante, especifica la clasificación ordenada para las propiedades de números enteros y enumeraciones durante la indexación.
Configuración de la aplicación de búsqueda
Personalization=falseScoringConfig o mediante la IU para administrar de Cloud SearchRecomendadaCuando crees o actualices la aplicación de búsqueda, asegúrate de proporcionar la información de propietario correcta como se describe en la clasificación de Influencia a través de la personalización
Campo SourceImportanceSourceCrowdingConfigOpcionalPara sesgar los resultados de ciertas fuentes de datos, establece este campo.
Campo numResultsSourceCrowdingConfigOpcionalPara controlar la diversidad de resultados, establece este campo.

Pasos siguientes

Aquí hay algunos pasos que puedes seguir:

  1. Diseña la estructura de un esquema para optimizar la interpretación de consultas.

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