La sugerencia desplegable es una función fundamental de OpenSearch. A medida que el usuario escribe una consulta, el sistema recomienda consultas candidatas para mejorar la eficiencia de escritura y ayudar a encontrar contenido relevante con mayor rapidez.
Descripción general
La función de sugerencia desplegable extrae consultas del contenido de sus documentos. Puede generar consultas candidatas mediante diversos métodos de coincidencia para chino, como coincidencia de prefijos, ortografía completa en pinyin, acrónimos de iniciales pinyin, combinaciones de caracteres chinos y pinyin, prefijos tokenizados y homófonos.
Por ejemplo, puede buscar la consulta vestido largo de las siguientes maneras:
Prefijo chino:
连, 连衣, …Prefijo pinyin (ortografía completa):
l, li, lian, lianyi, lianyiqun, …Prefijo pinyin (iniciales):
l, ly, lyq, …Caracteres chinos más pinyin:
连yi, 连衣qun, …Prefijos tras la tokenización:
long style, long style dress, dress long, …Homófonos chinos y caracteres incorrectos de sonido similar:
连衣群, 联谊群, …
También puede usar intervención manual para influir en los resultados de las sugerencias. Para consultar las métricas clave de rendimiento de sus sugerencias desplegables, consulte Drop-down suggestion report.
Fuentes de datos
Las sugerencias desplegables utilizan datos de los documentos de su aplicación y de las consultas de los usuarios finales. Puede aplicar filtros tanto a los documentos como a las consultas.
Consultas candidatas a partir de documentos de la aplicación
Puede seleccionar hasta tres campos de una aplicación como fuente de datos para cada modelo de sugerencia desplegable. Durante el procesamiento, el sistema selecciona una muestra de documentos (hasta un millón) y procesa los campos elegidos según reglas específicas para generar consultas candidatas. Posteriormente, el sistema conserva un subconjunto como sugerencias finales. Se admiten dos reglas de generación: Extract y Retain original value.
Extract: Este método utiliza un analizador NLP propietario de Alibaba entrenado con grandes volúmenes de datos de lenguaje natural. Aplica tokenización al contenido del campo, extrae términos significativos y los combina para formar consultas candidatas. Este enfoque garantiza que las sugerencias generadas puedan recuperar los documentos correspondientes.
Retain original value: Este método usa el contenido sin procesar de un campo como consulta candidata, sin aplicar tokenización. Si el contenido supera los 30 caracteres, se trunca a los primeros 30 caracteres. Este método es adecuado para campos que no requieren tokenización, como nombres de tiendas, nombres de usuario o títulos de canciones, o cuando usted proporciona sus propias consultas candidatas pregeneradas. Se recomienda utilizar campos con contenido breve y claro.
Cuando utiliza la regla Extract, también puede especificar un extraction model para el modelo de sugerencia desplegable. Una vez especificado un modelo de extracción, el sistema emplea un modelo de lenguaje grande para realizar una ronda adicional de filtrado sobre las consultas candidatas extraídas; esto elimina candidatos sin sentido y mejora la calidad de las sugerencias. El extraction model es una configuración opcional y solo surte efecto cuando un campo utiliza la regla Extract. Cuando el modelo de extracción entra en vigor, se le cobra según la cantidad de tokens consumidos realmente por el modelo. Para obtener más información sobre la facturación, consulte Billing.
Consultas candidatas a partir de consultas de usuarios finales
El sistema analiza los historiales de búsqueda de los usuarios durante los últimos N días (el valor predeterminado es 7) y considera métricas como la frecuencia de búsqueda, el número promedio de resultados, los pesos históricos de los términos y las tasas recientes de éxito de las consultas. Con base en este análisis, selecciona consultas representativas como sugerencias candidatas.
Función de consulta de búsqueda histórica: La función de sugerencia desplegable también admite la opción de consulta de búsqueda histórica, la cual prioriza las sugerencias según las consultas anteriores del usuario actual (requiere los parámetros raw_query y user_id en las solicitudes). La función de consulta de búsqueda histórica es una extensión que genera cargos de entrenamiento basados en las horas de cómputo consumidas por cada trabajo de entrenamiento. La función de consulta de búsqueda histórica está en proceso de desuso. La opción ya no se muestra al crear un modelo de sugerencia desplegable. La siguiente descripción aplica únicamente a modelos existentes que tienen esta función habilitada.
Para deshabilitar la fuente de datos de consultas de usuarios finales, puede establecer una condición de filtro que nunca se cumpla, como biz_type=not_exist.
Después de habilitar la función de consulta de búsqueda histórica, debe incluir el parámetro user_id en sus solicitudes de sugerencia desplegable para ofrecer resultados personalizados.
Las consultas de búsqueda históricas son únicas para cada usuario. El sistema utiliza el parámetro user_id para distinguir a los usuarios. Por ejemplo, si el Usuario A buscó recientemente lavavajillas, podría ver lavavajillas nuevamente como sugerencia. Sin embargo, el Usuario B, que nunca lo ha buscado, no verá ese término en sus sugerencias.
Intervención manual
Puede influir manualmente en las sugerencias desplegables de las siguientes maneras:
Gestionar los resultados de consultas candidatas mediante una lista de bloqueados y una lista de permitidos.
Establecer una condición de filtro en los documentos de origen de la aplicación. Al aplicar un filtro, el sistema utiliza solo los documentos que cumplen la condición para generar sugerencias candidatas.
Parámetro | Descripción |
Condición de filtro | Especifique una condición de filtro basada en los campos del esquema de su aplicación OpenSearch. El filtro se aplica a todos los documentos de la aplicación. Nota:
Ejemplo: Si establece la condición de filtro en |
En la página Create Drop-down Suggestion Model de la consola, puede configurar los siguientes ajustes:
Target Application: Seleccione la aplicación que contiene los datos de origen para las sugerencias candidatas.
Model Name: Introduzca un nombre de 1 a 30 caracteres. Debe comenzar con una letra y puede contener mayúsculas, minúsculas, dígitos y guiones bajos (_). El nombre debe ser único entre todos sus modelos.
Training Fields: Seleccione los campos de origen de la aplicación objetivo y especifique un método de procesamiento para cada campo: Extract o Retain original value.
Extraction Model: Esta es una configuración opcional. El modelo de extracción disponible actualmente es deepseek-v4-flash. Después de seleccionar un modelo de extracción, el sistema utiliza un modelo de lenguaje grande para filtrar las consultas candidatas extraídas y eliminar los candidatos sin sentido. Esta configuración solo surte efecto cuando un campo utiliza la regla Extract. Cuando el modelo de extracción entra en vigor, se le cobra según la cantidad de tokens consumidos realmente por el modelo.
Doc Filter Condition y Query Filter Condition: Son condiciones de filtro que se aplican a la fuente de datos de documentos de la aplicación y a la fuente de datos de consultas de usuarios finales, respectivamente (por ejemplo,
status=1obiz_type=phone). Para conocer las reglas de sintaxis, consulte la descripción de la condición de filtro anterior.
Control de resultados de sugerencias
Lista de bloqueados: La lista de bloqueados admite coincidencias parciales. Cualquier consulta que contenga una palabra clave bloqueada se excluye de los resultados de sugerencias desplegables. Si observa sugerencias no deseadas, agregue las palabras clave relevantes a la lista de bloqueados para filtrarlas.
Lista de permitidos: Si una consulta incluida en la lista de permitidos cumple con los criterios de recomendación, se prioriza en los resultados de sugerencias desplegables. Si las consultas de alta calidad no aparecen o tienen una clasificación demasiado baja, agréguelas a la lista de permitidos para aumentar su visibilidad. Para obtener detalles sobre cómo configurar listas de bloqueados y listas de permitidos, click here.
Las aplicaciones estándar no admiten sugerencias desplegables. Esta función solo está disponible para aplicaciones Advanced.
Puede crear un máximo de 10 modelos de sugerencia desplegable por aplicación.
Los nombres de los modelos deben ser únicos dentro de su cuenta. Esto incluye modelos de sugerencia desplegable, modelos de popularidad, modelos de predicción de categorías, modelos de búsquedas principales y modelos de sugerencias.
Solo los campos indexados de tipo TEXT, SHORT_TEXT, LITERAL o INT pueden usarse como fuentes de datos para sugerencias desplegables.
Puede seleccionar un máximo de tres campos de entrenamiento para un solo modelo.
Al modificar el esquema de una aplicación, no puede alterar los campos que utiliza un modelo de sugerencia desplegable.
Para entrenar un modelo de sugerencia desplegable, la tabla de la aplicación (incluidos
raw_queryy los datos almacenados) debe contener más de 1,000 entradas. De lo contrario, el entrenamiento del modelo podría fallar debido a datos insuficientes.Eliminar una aplicación también elimina sus modelos de sugerencia desplegable asociados.
Para una búsqueda de sugerencia desplegable, el parámetro
queryadmite una longitud máxima de 30 bytes en codificación UTF-8 (hasta 10 caracteres chinos). Si se supera el límite, el sistema reporta un error y no devuelve resultados.En una búsqueda de sugerencia desplegable, el parámetro
hitdebe ser un número entero entre 1 y 30, inclusive. Si proporciona un valor fuera de este rango (como 0, -1 o 31), el sistema utiliza un valor predeterminado de 30 y devuelve un mensaje de error.Una lista de bloqueados puede contener un máximo de 500 palabras clave.
Una lista de permitidos puede contener un máximo de 500 consultas.
Si hay un conflicto entre la lista de bloqueados y la lista de permitidos, la lista de bloqueados tiene prioridad.
Los cambios en las listas de bloqueados y permitidos surten efecto en tiempo real.
Después de crear un modelo de sugerencia desplegable, el entrenamiento diario programado se habilita de forma predeterminada. Los datos de sugerencias se actualizan periódicamente con cada ciclo de entrenamiento.
El tiempo de entrenamiento de un modelo de sugerencia desplegable depende del volumen de datos y la carga del sistema. Si el entrenamiento tarda más de 30 minutos, póngase en contacto con nosotros.
La función de coincidencia de homófonos chinos está habilitada de forma predeterminada. Puede deshabilitarla agregando el parámetro
re_search="disable"a su solicitud.La función básica de sugerencia desplegable es actualmente gratuita. El sistema asigna los recursos de cómputo y almacenamiento. A cada modelo se le asignan aproximadamente 100 QPS de recursos de cómputo y almacenamiento para unos 2 millones de consultas candidatas.
Se recomienda configurar el parámetro
raw_queryen las solicitudes de búsqueda para ayudar al sistema a identificar la consulta original introducida por el usuario. Para obtener más información, consulte Search processing.Si habilita la función de consulta de búsqueda histórica, se le cobrará por cada trabajo de entrenamiento según las horas de cómputo consumidas. Para obtener más información, consulte Billing (esta función está en proceso de desuso y ya no se muestra al crear un modelo).
Después de configurar un extraction model, se le cobra según la cantidad de tokens consumidos realmente por el modelo. Para obtener más información, consulte Billing.
Para obtener más información sobre los parámetros raw_query, user_id y from_request_id, click here.
Para habilitar la función de consulta de búsqueda de alta frecuencia de forma predeterminada, las solicitudes de búsqueda deben incluir el parámetro raw_query o contener el índice predeterminado en la cláusula de consulta.
raw_query independiente: El parámetro
raw_querynecesario para el entrenamiento de promoción debe ser una consulta única que devuelva resultados.Los datos de entrenamiento del modelo de sugerencias se actualizan diariamente (T+1). Los datos cargados en un día determinado entran en vigor después de que finalice el entrenamiento del día siguiente.
Solución de problemas de fallos en el entrenamiento de modelos
Si falla el entrenamiento de su modelo de sugerencia desplegable, siga estos pasos para solucionar el problema:
Revise el informe de anomalías: En la página de detalles del modelo, en el área Basic Information, compruebe el Latest Version Status. Si el estado es Training Failed o Abnormal Data, el área mostrará una información sobre herramientas de Anomaly Report. Pase el cursor sobre ella para ver los detalles de la excepción y la solución, y utilice esta información para identificar la causa del fallo en el entrenamiento.
Compruebe el nivel de integridad y las condiciones de actualización: En el área Data Verification de la página de detalles del modelo, revise el Completeness Level y las Upgrade Conditions correspondientes. Ajuste sus datos según las condiciones de actualización para mejorar el nivel de integridad y, a continuación, vuelva a entrenar el modelo.
Lógica de datos T-1: El entrenamiento del modelo utiliza datos estadísticos del día anterior (T-1). Cuando un modelo recién creado ejecuta su primer trabajo de entrenamiento, el sistema puede reportar un error de "Training field does not exist" porque aún no hay datos disponibles del día anterior. Espere hasta el día siguiente, cuando los datos estén listos, y luego vuelva a entrenar el modelo.
-
Requisitos de volumen de datos (condiciones L1): El entrenamiento del modelo requiere los siguientes umbrales mínimos de datos:
El volumen total de datos (la suma combinada de datos
raw_queryy datos de documentos de la aplicación) debe ser de al menos 1,000.El número de valores
raw_queryúnicos debe superar los 100.
Verificación del formato de condición de filtro: Un formato incorrecto en la condición de filtro es una causa común de fallos en el entrenamiento. Los nombres de los campos deben coincidir con los campos definidos en el esquema de la aplicación que tengan índices creados. Los operadores admitidos son <, >, <=, >=, = y !=. Múltiples condiciones tienen una relación AND y deben separarse con comas (,). Para consultar la sintaxis completa de la condición de filtro, consulte la sección Intervención manual anterior.
Mejores prácticas
Para mejorar la eficacia de las sugerencias desplegables (por ejemplo, para aumentar las búsquedas guiadas por sugerencias y las tasas de clics), asocie las solicitudes de sugerencias con las solicitudes de búsqueda. Para obtener instrucciones, consulte la sección "Asociar solicitudes de sugerencias y búsquedas" al final de este tema.
Elija campos con contenido conciso que sea relevante para el tema principal del documento.
Utilice las reglas Extract y Retain original value adecuadamente según sus necesidades.
En la respuesta,
suggestionscontiene los resultados de búsqueda, mientras queerrorsindica si ocurrió un error. Un campoerrorsno vacío no significa necesariamente que el camposuggestionsesté vacío. Por lo tanto, al analizar la respuesta, compruebe sisuggestionsestá vacío para determinar si debe mostrar datos.
Procedimiento
En la consola, vaya a Search Algorithm Center > Search Guidance > Drop-down Suggestions y haga clic en Create.
Introduzca un Model Name, seleccione Training Fields y un método de extracción, seleccione un Extraction Model (opcional), introduzca Filter Conditions (opcional) y haga clic en Submit.
En la página de lista de sugerencias desplegables, busque el modelo y haga clic en Train para iniciar el entrenamiento.
El entrenamiento suele tardar entre 20 y 30 minutos en completarse.
Una vez entrenado el modelo, puede probar las sugerencias. A continuación se muestra un ejemplo del método Retain original value:
Retain original value:
Haga clic en el botón Effect Preview en la esquina superior derecha de la página de detalles del modelo. En el cuadro de búsqueda emergente, introduzca una consulta (por ejemplo, la letra E). Las sugerencias coincidentes aparecerán debajo (como "Eifini" y "ELF SACK"). En el lado derecho, puede configurar los parámetros user id y display count.
-
Para consultar consultas candidatas en línea, consulte la demostración a continuación. Para obtener información detallada sobre la API, consulte Drop-down suggestion development guide.
Referencia de la página de sugerencia desplegable
Página de lista de sugerencias desplegables
En la consola de OpenSearch, vaya a Search Algorithm Center > Search Guidance > Drop-down Suggestions para acceder a la página de lista.
La página de lista muestra información de cada modelo de sugerencia desplegable, incluido Model Name, Creation Time, Model Status, Last Training Start Time y Latest Version Status (que puede ser Pending Training, Scheduling, Training, Trained and Passed, Training Failed o Abnormal Data). La columna Actions le permite ver detalles, entrenar o realizar otras operaciones en el modelo.
Página de detalles del modelo de sugerencia desplegable
La parte superior de la página de detalles del modelo muestra el área Basic Information, donde se visualizan la hora de creación, el estado del modelo y el estado de la última versión. La esquina superior derecha tiene un botón Effect Preview. La página incluye tres pestañas: Drop-down Suggestion, Top Search & Hint y Blocklist/Allowlist.
El área Basic Information muestra la hora de creación del modelo, el estado del modelo, la hora de inicio del último entrenamiento y el estado de la última versión. Si el estado es Training Failed o Abnormal Data, se muestra una información sobre herramientas de Anomaly Report en esta área.
La sección Configuration Information muestra los campos de entrenamiento configurados y sus métodos de procesamiento, el modelo de extracción, Doc filter condition, Query filter condition, lista de bloqueados/permitidos y tareas programadas. Haga clic en el botón Configure en la esquina superior derecha para modificar estos ajustes.
La sección Data Verification muestra la integridad de los datos y el nivel de integridad para el entrenamiento del modelo.
La sección Training History muestra los registros de entrenamiento del modelo.
Datos de métricas principales
Puede seleccionar diferentes intervalos de tiempo para ver las métricas principales del modelo de sugerencia desplegable, mostradas en una tabla y un gráfico de líneas.
Nota: Para consultar las definiciones de métricas específicas, consulte Drop-down suggestion report.
Demostración de SDK
API:
GET v3/openapi/suggestions/{suggestion_name}/actions/search?hit=10&query={your_query}&re_search=homonym&user_id=xxx
Dependencia Maven del SDK de Java:
<dependency>
<groupId>com.aliyun.opensearch</groupId>
<artifactId>aliyun-sdk-opensearch</artifactId>
<version>4.0.0</version>
</dependency>
Enlace relacionado: Release Notes
Ejemplo de código:
package com.example.opensearch;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.SuggestionClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.nio.charset.Charset;
public class SuggestDemo {
static private final String accesskey = "YOUR_ACCESSKEY_ID";
static private final String secret = "YOUR_ACCESSKEY_SECRET";
static private final String host = "THE_ENDPOINT_OF_THE_REGION_WHERE_YOUR_APP_IS_LOCATED";
OpenSearch openSearch;
OpenSearchClient openSearchClient;
static private final byte hits = 8; // The maximum number of suggestions to return.
static private final String suggestionName = "YOUR_SUGGESTION_MODEL_NAME"; // The name of your drop-down suggestion model.
@Before
public void setUp() {
// Initialize the OpenSearch object.
openSearch = new OpenSearch(accesskey, secret, host);
openSearchClient = new OpenSearchClient(openSearch);
}
@Test
public void TestEnv() {
// View the file and default encoding formats.
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
// Create a SuggestionClient object.
SuggestionClient suggestionClient = new SuggestionClient("YOUR_APP_NAME", suggestionName, openSearchClient);
String query = "YOUR_SEARCH_QUERY";
try {
SuggestParams suggestParams = new SuggestParams();
suggestParams.setQuery(query); // Set the query.
suggestParams.setHits(10); // Set the maximum number of suggestions to return.
suggestParams.setUserId("12345678"); // Set the user ID.
// The Chinese homophone matching feature is enabled by default. You can adjust this by using the re_search parameter.
// To disable this feature, use ReSearch.findByValue(1). It is enabled by default (equivalent to ReSearch.findByValue(0) or omitting the parameter).
suggestParams.setReSearch(ReSearch.findByValue(1));
SearchResult result = suggestionClient.execute(suggestParams);
System.out.println(result); // Print the results.
} catch (OpenSearchException e) {
e.printStackTrace();
} catch (OpenSearchClientException e) {
e.printStackTrace();
}
}
@After
public void clean() {
openSearch.clear();
}
}
Para obtener más detalles sobre el SDK de Java para sugerencias desplegables, consulte drop-down suggestion demo.
Respuesta de ejemplo:
{
"request_id": "159851481919726888064081",
"searchtime": 0.006246,
"suggestions": [
{
"suggestion": "trendy skirts"
},
{
"suggestion": "dresses for petite women"
},
{
"suggestion": "polka dot dresses"
},
{
"suggestion": "youthful skirts"
},
{
"suggestion": "polka dot skirt"
},
{
"suggestion": "skirts for petite women"
},
{
"suggestion": "polka dot skirts for petite women"
}
]
}
Nota: El request_id devuelto en la respuesta se puede utilizar para asociar la sugerencia con una solicitud de búsqueda posterior.
Asociación de solicitudes de sugerencias y búsquedas
Asociar solicitudes de sugerencias con solicitudes de búsqueda ofrece los siguientes beneficios:
Permite recopilar métricas para medir el impacto de las sugerencias desplegables en el rendimiento de búsqueda. Estas métricas incluyen PV de búsquedas guiadas por sugerencias, tasas de clics y tasas de resultados nulos o bajos. Para obtener más detalles, consulte Drop-down suggestion report.
-
Los datos de solicitudes asociadas proporcionan información valiosa, como datos de clics en sugerencias, que pueden utilizarse para optimizar el modelo de clasificación de sugerencias y mejorar la eficacia de las búsquedas guiadas por sugerencias.
Método de asociación:
Si un usuario inicia una búsqueda seleccionando una sugerencia desplegable, incluya el parámetro
from_request_id={from_request_id}en la solicitud de búsqueda. El parámetrofrom_request_idindica el origen de la búsqueda. Si la consulta actual proviene de una lista de recomendaciones, como sugerencia desplegable, modelo de búsquedas principales o modelo de sugerencias, puede asignar elrequest_idde esa solicitud de recomendación a este parámetro. Al asociar estos eventos, puede calcular métricas clave para funciones ascendentes, medir su eficacia y recopilar datos para optimización. Este parámetro también se describe en search processing documentation.
Ejemplo:
Suponga que una llamada a la API de sugerencia desplegable devuelve un request_id de 159851481919726888064081. Puede asociarlo con una solicitud de búsqueda como se muestra a continuación:
SearchParams searchParams = new SearchParams(config);
searchParams.setQuery("title:'skirts for petite women'"); // Query guided by a drop-down suggestion.
// Add the from_request_id parameter.
Map<String, String> customParam =new HashMap<>();
customParam.put("from_request_id","159851481919726888064081");
searchParams.setCustomParam(customParam);
// Execute the query and return a SearchResult object.
SearchResult execute = searcherClient.execute(searchParams);
// Return the query data as a string.
String result = execute.getResult();
System.out.println(result);