Mejorar los resultados de búsqueda

Puedes especificar condiciones de impulso en tu solicitud de búsqueda para promocionar o degradar determinados documentos en los resultados de búsqueda. Cuando un documento cumple las condiciones especificadas, se le aplican valores de refuerzo y los resultados se ordenan en consecuencia. También puede especificar valores numéricos y de marca de tiempo personalizados que le permitan ordenar los resultados en función de parámetros como la popularidad y la novedad.

La especificación de impulso en una solicitud de búsqueda es diferente de un control de impulso que se adjunta a una configuración de publicación. La especificación de refuerzo del campo boostSpec anula el control de refuerzo definido en el campo boostAction de una configuración de servicio. Para obtener más información sobre los controles de aumento, consulta Acerca de los controles de aumento.

En esta página se describen los siguientes tipos de especificaciones de impulso:

Puedes aplicar estas especificaciones de refuerzo a las aplicaciones de búsqueda multimedia de consultas y a las aplicaciones de búsqueda personalizadas que contengan datos estructurados, no estructurados y de sitios web. Estas especificaciones no se aplican a las aplicaciones de búsqueda de contenido sanitario.

Impulsar con una condición fija

Para aumentar los resultados en una cantidad fija en función de si cumplen una condición, haz lo siguiente:

  1. Especifica la especificación de impulso en el campo boostSpec cuando envíes una solicitud servingConfigs.search.

    {
      "boostSpec": {
        "conditionBoostSpecs": {
          "condition": "BOOST_CONDITION",
          "boost": BOOST_VALUE
        }
      }
    }
    

    La especificación contiene los siguientes parámetros:

    • BOOST_CONDITION: una expresión de filtro de texto para seleccionar los documentos a los que se aplica el aumento. El filtro debe dar como resultado un valor booleano.
    • BOOST_VALUE: un número de punto flotante en el intervalo [-1,1]. Si el valor es negativo, los resultados se degradan (aparecen más abajo en los resultados). Si el valor es positivo, los resultados se promocionan (aparecen más arriba en los resultados).

Ejemplo de caso práctico

Supongamos que tu almacén de datos contiene datos sobre hoteles y sus valoraciones por estrellas. Quieres destacar los hoteles con una valoración de tres estrellas o más. La valoración por estrellas está disponible en el campo numérico star_rating. Puedes especificar el condition en el boostSpec como star_rating >= 3.0 y un valor de impulso de 0,7 para impulsar todos los hoteles con star_rating de 3,0 o más en la misma cantidad.

{
  "boostSpec": {
    "conditionBoostSpecs": {
      "condition": "star_rating>=3.0",
      "boost": 0.7
    }
  }
}

Impulsar con atributos numéricos personalizados

Puedes mejorar los resultados en función de atributos numéricos personalizados de forma lineal por tramos especificando puntos de control y sus valores de mejora correspondientes.

Para especificar un aumento mediante atributos numéricos personalizados, siga estos pasos:

  1. Especifica la especificación de impulso en el campo boostSpec cuando envíes una solicitud servingConfigs.search.

    {
      "boostSpec": {
        "conditionBoostSpecs": {
            "condition": "BOOST_CONDITION",
            "boostControlSpec": {
              "attributeType": "NUMERICAL",
              "interpolationType": "LINEAR",
              "fieldName": "CUSTOM_ATTRIBUTE_FIELD_NAME",
              "controlPoints": [
                {
                  "attributeValue": "CUSTOM_ATTRIBUTE_VALUE_1",
                  "boostAmount": BOOST_AMOUNT_1
                },
                {
                  "attributeValue": "CUSTOM_ATTRIBUTE_VALUE_2",
                  "boostAmount": BOOST_AMOUNT_2
                }
              ]
            }
        }
      }
    }
    

    La especificación contiene los siguientes parámetros:

    • BOOST_CONDITION: una expresión de filtro de texto para seleccionar los documentos a los que se aplica el aumento. El filtro debe dar como resultado un valor booleano.
    • CUSTOM_ATTRIBUTE_FIELD_NAME: nombre del campo del atributo numérico personalizado cuyo valor determina el aumento.
    • CUSTOM_ATTRIBUTE_VALUE: valor numérico del atributo personalizado de un punto de control determinado con un tipo de datos de cadena. Por ejemplo, "3.3" o "12". Para obtener más información, consulta ControlPoint.
    • BOOST_AMOUNT: un número de punto flotante en el intervalo [-1,1]. Si el valor es negativo, los resultados se degradan (aparecen más abajo en los resultados). Si el valor es positivo, los resultados se promocionan (aparecen más arriba en los resultados). Indica la cantidad de aumento asignada al atributo personalizado de un punto de control determinado.

Cuando un documento de los resultados de búsqueda cumple la condición especificada, se aplica un valor de refuerzo de la siguiente manera:

Valor de atributo Importe de la mejora
Menos que el primer punto de control Es igual a la cantidad de aumento del primer punto de control.
Igual al punto de control Es igual al importe de la mejora asignado
Entre puntos de control Se calcula mediante interpolación lineal.
Mayor que el último punto de control Es igual al valor de impulso del último punto de control.

Ejemplo de caso práctico

Supongamos que tu almacén de datos contiene datos sobre hoteles y sus valoraciones por estrellas. Quieres potenciar los resultados de búsqueda de hoteles en proporción a sus valoraciones de estrellas. Puede definir la especificación de impulso de la siguiente manera:

{
  "boostSpec": {
    "conditionBoostSpecs": {
        "condition": "star_rating >= 3.0",
        "boostControlSpec": {
          "attributeType": "NUMERICAL",
          "interpolationType": "LINEAR",
          "fieldName": "star_rating",
          "controlPoints": [
            {
              "attributeValue": "3.5",
              "boostAmount": 0.25
            },
            {
              "attributeValue": "4.0",
              "boostAmount": 0.30
            },
            {
              "attributeValue": "4.5",
              "boostAmount": 0.32
            }
          ]
        }
    }
  }
}

En este caso, los resultados de búsqueda se impulsan de la siguiente manera:

Valoración por estrellas Importe de la mejora
menor o igual que 3,5 0,25
entre 3,5 y 4,0 entre 0,25 y 0,30, calculado mediante interpolación lineal
igual a 4,0 0,30
entre 4,0 y 4,5 entre 0,30 y 0,32, calculado mediante interpolación lineal
mayor o igual que 4,5 0,32

Impulso según la novedad

Puedes mejorar los resultados en función de los atributos de fecha y hora de forma lineal por tramos especificando los puntos de control y sus valores de mejora correspondientes.

Para especificar un aumento mediante atributos de fecha y hora personalizados, haga lo siguiente:

  1. Especifica la especificación de impulso en el campo boostSpec cuando envíes una solicitud servingConfigs.search.

    {
      "boostSpec": {
        "conditionBoostSpecs": {
            "condition": "BOOST_CONDITION",
            "boostControlSpec": {
              "fieldName": "DATETIME_FIELD_NAME",
              "attributeType": "FRESHNESS",
              "interpolationType": "LINEAR",
              "controlPoints": [
                {
                  "attributeValue": "DURATION_VALUE_1",
                  "boostAmount": BOOST_AMOUNT_1
                },
                {
                  "attributeValue": "DURATION_VALUE_2",
                  "boostAmount": BOOST_AMOUNT_2
                }
              ]
            }
        }
      }
    }
    

    La especificación contiene los siguientes parámetros:

    • BOOST_CONDITION: una expresión de filtro de texto para seleccionar los documentos a los que se aplica el aumento. El filtro debe dar como resultado un valor booleano.
    • DATETIME_FIELD_NAME: el nombre de campo de un atributo personalizado, DATETIME como la fecha de publicación o la fecha de la última actualización, o un atributo predefinido inferido por Google, como datePublished.
    • DURATION_VALUE: el valor de duración del tipo de datos dayTimeDuration que determina la actualización de un documento. Se calcula como la duración entre la fecha y hora en la que se realiza la búsqueda y la fecha y hora del atributo de fecha y hora personalizado de un documento. El valor de la duración debe especificarse según el formato ISO 8601 con el patrón [nD][T[nH][nM][nS]]. Por ejemplo, la duración entre el 1 de enero del 2024 y el 1 de marzo del 2024 se puede expresar como 59D. Del mismo modo, la duración de dos días y medio se puede expresar como 2DT12H. Para obtener más información, consulta ControlPoint.
    • BOOST_AMOUNT: un número de punto flotante en el intervalo [-1,1]. Si el valor es negativo, los resultados se degradan (aparecen más abajo en los resultados). Si el valor es positivo, los resultados se promocionan (aparecen más arriba en los resultados). Indica el aumento asignado al atributo de fecha y hora personalizado de un punto de control determinado.

Cuando un documento de los resultados de búsqueda cumple la condición especificada, se aplica un valor de refuerzo de la siguiente manera:

Valor de duración Importe de la mejora
Menos que el primer punto de control Es igual a la cantidad de aumento del primer punto de control.
Igual a un punto de control determinado Es igual al importe de la mejora asignado
Entre puntos de control Se calcula mediante interpolación lineal.
Mayor que el último punto de control Es igual al valor de impulso del último punto de control.

Ejemplo de caso práctico con un atributo de fecha y hora personalizado

Supongamos que tu almacén de datos contiene datos estructurados en los que cada documento tiene una fecha de publicación. Quieres mejorar los resultados de búsqueda en proporción a su actualidad. Puede definir la especificación de impulso de la siguiente manera:

{
  "boostSpec": {
    "conditionBoostSpecs": {
        "condition": true,
        "boostControlSpec": {
          "fieldName": "publication_date",
          "attributeType": "FRESHNESS",
          "interpolationType": "LINEAR",
          "controlPoints": [
            {
              "attributeValue": "7D",
              "boostAmount": 0.40
            },
            {
              "attributeValue": "30D",
              "boostAmount": 0.37
            },
            {
              "attributeValue": "60D",
              "boostAmount": 0.32
            },
            {
              "attributeValue": "90D",
              "boostAmount": 0
            }
          ]
        }
    }
  }
}

En este caso, los resultados de búsqueda se impulsan de la siguiente manera:

Actualización Importe de la mejora
7 días como máximo 0,40
entre 7 y 30 días entre 0,40 y 0,37, calculado mediante interpolación lineal
igual a 30 días 0,37
entre 30 y 60 días entre 0,37 y 0,32, calculado mediante interpolación lineal
igual a 60 días 0,32
entre 60 y 90 días entre 0,32 y 0,0, calculado mediante interpolación lineal
igual o superior a 90 días 0,0

Ejemplo de uso con una fecha de página inferida por Google

Al rastrear las páginas web de tu almacén de datos del sitio web, Google infiere los datos de las páginas mediante las propiedades que se aplican a tu contenido. Vertex AI Search añade estas propiedades de datos de página inferidas a tu esquema. Estos datos inferidos incluyen las siguientes propiedades de fecha predefinidas:

  • datePublished: la fecha y la hora en las que se publicó la página por primera vez.
  • dateModified: fecha y hora en las que se modificó la página por última vez.

Estas propiedades se indexan automáticamente. Puedes usar directamente estas propiedades de fecha para enriquecer tu búsqueda sin añadirlas a tu esquema. Puede usar estas propiedades predefinidas para impulsar su página. Por ejemplo, puedes definir la especificación de refuerzo asignando el valor pageModified al campo fieldName de la siguiente manera:

{
  "boostSpec": {
    "conditionBoostSpecs": {
        "condition": true,
        "boostControlSpec": {
          "fieldName": "dateModified",
          "attributeType": "FRESHNESS",
          "interpolationType": "LINEAR",
          "controlPoints": [
            {
              "attributeValue": "7D",
              "boostAmount": 0.35
            },
            {
              "attributeValue": "30D",
              "boostAmount": 0.30
            }
          ]
        }
    }
  }
}

Google deduce estas fechas de la mejor forma posible, pero es posible que no coincidan con las fechas reales. Estos campos solo se rellenan cuando Google tiene un alto nivel de confianza. Si faltan estos valores de fecha, estos campos se convierten en anulables.

Como práctica recomendada, Google recomienda que el propietario del dominio o el administrador del sitio web actualicen estas propiedades en tus páginas web y que actualices manualmente tu almacén de datos del sitio web de Vertex AI Search después de la actualización. Para obtener más información, consulta la entrada de blog Ayuda a la Búsqueda de Google a saber qué fecha debería mostrar junto a tu página web y descubre cómo funcionan los datos estructurados en la Búsqueda de Google.

Para añadir atributos de datos estructurados personalizados y enriquecer su índice, consulte el artículo Añadir atributos de datos estructurados personalizados al esquema del almacén de datos.

Ajuste del importe del aumento

Además de los factores que influyen en la clasificación de un resultado, como la coincidencia de palabras clave, la coincidencia de contexto y la relevancia, la condición de impulso afecta significativamente a la clasificación de un resultado. Por lo tanto, debes calibrar cuidadosamente el importe del aumento. Google recomienda que empieces con un aumento bajo y preciso, como 0,1 o menos, y que lo ajustes en función de los resultados de búsqueda.

Ejemplo de caso práctico con filtro de relevancia

La regulación de la cantidad de impulso es especialmente importante cuando se usa el campo boostSpec con el filtro de relevancia. Para obtener más información sobre el filtro de relevancia, consulta Filtrar búsquedas por relevancia a nivel de documento.

Supongamos que tienes varios documentos con diferentes fechas de publicación. En el caso de una consulta concreta, la siguiente tabla representa la clasificación absoluta sin implementar ninguna condición de refuerzo ni filtro de relevancia, e indica la relevancia de los documentos para la consulta.

Documento Fecha de publicación Relevancia Clasificación
A 1 de febrero del 2024 Alta #1
B 1 de marzo del 2024 Alta #2
C 1 de abril del 2024 Mínimo #3
D 1 de mayo del 2024 Medio #4
E 1 de junio del 2024 Bajo #5

El 6 de junio del 2024, añade las siguientes condiciones de búsqueda a tu solicitud de búsqueda:

  • El filtro de relevancia se ha definido como LOW.
  • Aumenta el valor de forma que los documentos publicados durante los últimos 31 días se aumenten en 0,7 y los documentos que tengan más de una semana, pero menos de 60 días, se aumenten en 0,6.

En los resultados de búsqueda, primero se filtran los resultados por relevancia y, después, se aplica el valor de impulso. Por lo tanto, las condiciones aplicadas alteran la clasificación de las páginas en los resultados de la siguiente manera:

Documento Fecha de publicación Relevancia Clasificación
E 1 de junio del 2024 Bajo #1
D 1 de mayo del 2024 Medio #2
A 1 de febrero del 2024 Alta #3
B 1 de marzo del 2024 Alta #4

El resultado con la relevancia más baja se excluye debido al filtro de relevancia. Los documentos que son menos relevantes para una consulta se clasifican como resultados principales porque se han potenciado con un valor de potenciación alto. Los resultados más relevantes se clasifican en puestos más bajos.

Por lo tanto, Google recomienda que empieces con un valor bajo y preciso para el aumento y que lo ajustes en función de los resultados de búsqueda. En este ejemplo, si empiezas con importes de impulso de 0,1 o menos, es posible que obtengas resultados más relevantes en la parte superior.

Siguientes pasos

  • Haz una solicitud de búsqueda con la especificación de impulso en el campo boostSpec.
  • Para entender el impacto del aumento en la calidad de búsqueda de una aplicación de búsqueda personalizada, evalúa la calidad de búsqueda. Para obtener más información, consulta el artículo Evaluar la calidad de la búsqueda.