Cree un sistema de búsqueda por palabras clave para catálogos de productos que admita búsqueda multiatributo, filtrado por categoría, análisis de consultas y clasificación por relevancia. Al finalizar este tutorial, contará con un prototipo de búsqueda funcional que acepta consultas por palabras clave, filtra resultados por categoría y precio, corrige consultas con errores ortográficos y clasifica los resultados según su relevancia.

Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una cuenta de Alibaba Cloud con un par de AccessKey. La aplicación de Open Search requiere un par de AccessKey para la autenticación.
(Opcional) Un par de AccessKey para un usuario de RAM, si planea delegar el acceso. Para obtener más información, consulte Access authorization rules.
(Opcional) Una instancia de ApsaraDB RDS for MySQL con datos de productos, si planea usar una base de datos como origen de datos.
Paso 1: Crear una aplicación
La búsqueda de comercio electrónico involucra varias tablas relacionadas, como una tabla de productos y una tabla de precios. Seleccione una aplicación avanzada que admita la unión de múltiples tablas.
Inicie sesión en la consola de Open Search. En el panel de navegación izquierdo, haga clic en Instance Management. En la página Instance Management, haga clic en Create Instance. En la esquina superior izquierda de la página, establezca la edición en OpenSearch Industry Algorithm Edition y luego seleccione la región objetivo en la barra de navegación superior.
Seleccione el tipo de aplicación. Elija una aplicación avanzada que admita la unión de múltiples tablas. Para comparar los tipos de aplicaciones, consulte Comparison between standard applications and advanced applications.
-
Configure los parámetros de la aplicación.
Este tutorial utiliza los siguientes valores de parámetros:
Product Edition: Industry Algorithm Edition
Product Type: pay-as-you-go
Region and Zone: China (Hangzhou)
Industry Type: E-commerce Industry
Cluster Preferences: Exclusive Cluster - General-purpose
Parámetro
Descripción
Product Type
Método de facturación: subscription o pay-as-you-go. Para obtener más información, consulte Billing methods.
Region and Zone
China: Shenzhen, Qingdao, Beijing, Zhangjiakou, Hangzhou, Shanghai y Hong Kong. Asia Pacífico: Singapore. Europa y América: Germany (Frankfurt) y US (Virginia).
Application Name
Acepta dígitos, letras y guiones bajos (_). Debe comenzar con una letra. Máximo 30 caracteres. No se puede modificar después de la creación.
Application Type
Aplicación avanzada o aplicación estándar.
Cluster Preferences
Tipos de especificaciones: compartido de propósito general, compartido de computación, compartido de almacenamiento, exclusivo de propósito general, exclusivo de computación y exclusivo de almacenamiento. Para obtener más información, consulte What is OpenSearch?.
Storage Capacity and Computing Resources
Establezca las cuotas según su carga de trabajo. El número de unidades lógicas de computación (LCU) equivale al número de consultas por segundo (QPS) multiplicado por las LCU consumidas por consulta. Para ver el consumo de LCU por consulta, adquiera una instancia compartida de propósito general y ejecute una prueba de búsqueda.
Paso 2: Definir el esquema de la aplicación
Open Search ofrece cuatro formas de definir el esquema de su aplicación:
|
Método |
Recomendado para |
|
Manually define an application schema |
Control total sobre cada campo y tipo |
|
Use a template to define an application schema |
Configuración rápida con una plantilla predefinida o personalizada |
|
Upload a file to define an application schema |
Inicio a partir de un archivo de datos JSON existente. Open Search analiza el archivo y genera un esquema inicial. Redefina los tipos de campo después de la generación. |
|
Use a data source to define an application schema |
Sincronización de datos desde ApsaraDB RDS, MaxCompute o PolarDB. El esquema de la tabla de origen genera el esquema inicial de la aplicación, lo que reduce el trabajo manual y los errores. |
Si utiliza servicios de almacenamiento de Alibaba Cloud como MaxCompute, ApsaraDB RDS o PolarDB, especifíquelos como orígenes de datos en la consola de Open Search para habilitar la sincronización automática de datos. Los siguientes pasos utilizan un origen de datos de ApsaraDB RDS como ejemplo. Para obtener más información, consulte Configure an ApsaraDB RDS for MySQL data source.
Conectar al origen de datos
Introduzca los detalles de conexión de la base de datos.
En el cuadro de diálogo Connect to Database, introduzca el RDS Instance ID, Database Name, Username y Password, y luego haga clic en Connect.
Seleccionar el origen de datos
Elija las tablas que desea importar.
En el cuadro de diálogo Select Data Source, haga clic en la pestaña RDS. Establezca Select Database en opensearch (la instancia conectada es rm-bp1pgu04tn0ia280e). En la sección Select Table, agregue product_1 y price_detail_1 a la lista seleccionada y luego haga clic en OK.
Configurar el esquema de la tabla
Este ejemplo utiliza dos tablas:
Tabla principal: la tabla de productos (catálogo de productos)
Tabla secundaria: la tabla de precios de productos
El ID de clave principal de la tabla de precios de productos está asociado con el ID de clave externa de la tabla de productos.
Al definir el esquema de la aplicación, la tabla principal product_1 contiene los siguientes 15 campos:
category_name(nombre de categoría, TEXT)image_url(LITERAL_ARRAY)description(descripción del producto, TEXT)brand_name(nombre de marca, TEXT)thumbnail_url(LITERAL_ARRAY)title(título del producto, TEXT)is_onsale(INT)url(LITERAL)brand_id(LITERAL)series_id(LITERAL)sold_num(volumen de ventas, INT)category_id(INT)onsale_time(fecha de publicación, INT)price(DOUBLE)series_name(TEXT)
Para cada campo, puede configurar la clave principal, la etiqueta de campo, el tipo de campo y la unión con una tabla secundaria.
La tabla secundaria price_detail_1 (origen de datos opensearch:price_detail_1) define los siguientes cuatro campos:
discount_price, tipo DOUBLEpid, tipo INT, establecido como clave principalsale_price, tipo DOUBLEact_price, tipo DOUBLE
Definir el esquema de índice
Agregue todos los campos buscables de la tabla de productos y la tabla de precios de productos a una lista de índices denominada "default". Esto habilita consultas como query=default:"keyword".
Establezca la industria en E-commerce y la plantilla en General. La lista de campos de índice contiene las siguientes configuraciones de índice:
default(índice predeterminado): contiene los camposcategory_name,description,brand_name,title,create_byyupdate_by. Analizador: Industry - E-commerce general analyzercategory_name(índice de nombre de categoría): Analizador: Industry - E-commerce general analyzercategory_id: Analizador: Keywordseries_name: Analizador: Chinese - general analyzerbrand_name: Analizador: Chinese - general analyzerid: Analizador: Keywordtitle(índice de título): Analizador: Industry - E-commerce general analyzerseller_id: Analizador: Keywordbrand_id: Analizador: Keywordseries_id: Analizador: Keyword
El analizador afecta los resultados de búsqueda. Elija el método de análisis con cuidado. Para obtener más información, consulte Built-in analyzers.
Habilitar la sincronización de datos
Configure la sincronización automática de datos para que las actualizaciones en el origen de datos se envíen automáticamente a Open Search.
En la página de configuración del origen de datos, tanto las tablas product_1 como price_detail_1 están asociadas con la misma instancia de ApsaraDB RDS, y el interruptor Automatic Data Synchronization está activado.
Finalizar la aplicación
Haga clic en Completed. En la página Application Details, el estado de la aplicación indica que la inicialización está en curso.
Paso 3: Cargar datos
Cuando utiliza un origen de datos de ApsaraDB RDS, la importación completa de datos comienza automáticamente durante la creación del índice. Supervise el progreso de la importación en la página Application Details.
Alternativamente, cargue datos mediante las API o los SDK de Open Search. Para obtener más información, consulte API overview y SDK overview.
Paso 4: Probar consultas de búsqueda
Una vez completada la carga de datos, ejecute una prueba de búsqueda. La consola de Open Search proporciona una página integrada de prueba de búsqueda. Para acceso programático, utilice las API o los SDK de Open Search.
Para obtener detalles sobre la sintaxis de búsqueda, consulte Initiate search requests y query clause.
En la página de prueba de búsqueda, seleccione la aplicación test_han_indexes y el entorno de aplicación sin conexión. Introduzca query=title:'裙子' y establezca la cláusula config en start:0.
Paso 5: Configurar el análisis de consultas
El análisis de consultas procesa las consultas antes de la recuperación para mejorar la calidad de la búsqueda. Las consultas de cola larga pueden devolver pocos resultados, y las consultas con errores ortográficos o pinyin chino pueden no devolver ninguno. El análisis de consultas aborda estos problemas. Para obtener más información, consulte Query analysis y Perform searches based on relevance.
Open Search proporciona las siguientes funciones de análisis de consultas:
|
Función |
Descripción |
Ejemplo |
|
Stop word |
Filtra palabras sin significado, como signos de puntuación y partículas modales. |
Consulta "Running Man!" -- se filtra el signo de exclamación. |
|
Spelling correction |
Corrige automáticamente errores ortográficos evidentes. Para posibles errores, se utiliza la consulta original. |
"Alipapa" se corrige a "Alibaba". |
|
Word weight |
Evalúa la importancia de los términos y asigna pesos. Los términos de baja importancia pueden excluirse de la recuperación. |
Consulta "Open Search is good or not" -- recupera documentos que contienen "Open Search". |
|
Synonym |
Expande las consultas con sinónimos de la biblioteca de sinónimos integrada y modelos semánticos. Puede combinarse con el peso de palabras para obtener mejores resultados. |
"KFC" también recupera "Kentucky Fried Chicken". |
|
Named entity recognition (NER) |
Identifica entidades semánticas en las consultas y asigna prioridades de categoría. |
"Nike Slim Dress" -- "Nike" (marca, prioridad media), "Slim" (estilo, prioridad baja), "Dress" (categoría, prioridad alta). |
Ejemplo: Configurar la corrección ortográfica
Los siguientes pasos muestran cómo configurar una regla de corrección ortográfica.
Crear un diccionario de intervención
En la consola de Open Search, vaya a Search Algorithm Center > Retrieval Configuration. Haga clic en Dictionary Management.
Haga clic en Create. En el panel Create Query Analysis Dictionary, introduzca un nombre de diccionario, establezca Dictionary Type en Spelling Correction y haga clic en Save. En este ejemplo, establezca Name en
dic_error.En la lista de diccionarios, busque su diccionario y haga clic en Manage Entries. La página de gestión de entradas muestra los detalles del diccionario, incluido su nombre, tipo de diccionario, hora de creación y número de entradas. Para agregar entradas, haga clic en Add Intervention Entry o Add Entries in Batches.
-
Haga clic en Add Intervention Entry para crear una entrada.
En el cuadro de diálogo Add Intervention Entry, especifique la siguiente información:
Query: el término de búsqueda a corregir, por ejemplo
连衣群Corrected Word: el término correcto, por ejemplo
连衣裙Intervention Type: seleccione Add o Block
Haga clic en Save. La entrada aparece en la lista de entradas de intervención. La lista muestra las columnas Query, Corrected Word, Intervention Type, Modified At, Status y Actions, y proporciona un cuadro de búsqueda Enter Query para filtrar entradas. En este ejemplo, la consulta incorrecta
连衣群se corrige a连衣裙, el tipo de intervención es Add y el estado es Effective.
Crear una regla de análisis de consultas
Vaya a Search Algorithm Center > Retrieval Configuration. Haga clic en Query Analysis Rule Configuration.
Haga clic en Create. En el panel Create Rule, establezca Intervention Dictionaries en el diccionario de corrección ortográfica que creó (por ejemplo,
dic_error). En el mismo panel, introduzcatest_errorcomo nombre de la regla. El nombre puede contener dígitos, letras y guiones bajos (_), debe comenzar con una letra minúscula y no puede exceder los 16 caracteres. Establezca la aplicación objetivo entest_han_indexesen el entorno de aplicación en línea, defina el alcance del índice en title y el tipo de industria en E-commerce, y seleccione Spelling Correction en la sección de funciones. Seleccione System Built-in Dictionary como origen del diccionario y luego haga clic en OK para crear la regla.
Probar y aplicar la regla
En la página Query Analysis Rule Configuration, haga clic en Search Test en la columna Actions para verificar el comportamiento de corrección. La lista de reglas muestra el nombre del análisis de consultas
test_error, el tipo Custom, el índice objetivotitle, la industria E-commerce y la función incluida Spelling Correction.-
Después de la verificación, haga clic en Index Orientation y establezca la regla como la regla de análisis de consultas predeterminada.
En la página de prueba de búsqueda, seleccione el índice, establezca el parámetro
qp=test_errore introduzca la consultatitle:'连衣群', que contiene un error ortográfico intencional. Haga clic en Search. La consola muestra un aviso indicando que se devolvieron resultados para连衣裙con la opción de buscar连衣群en su lugar; la consulta se corrige automáticamente a(title:"连衣裙")y se devuelven los productos que coinciden con连衣裙.Una vez establecida la regla como predeterminada, el nombre del análisis de consultas en la lista de reglas cambia a
[Default]test_error, que se muestra en rojo porque la regla aún no se ha publicado, y la columna Default muestra Yes. Para revertir esto, haga clic en Cancel Default Rule en la columna Actions.
Paso 6: Configurar expresiones de ordenamiento
Las expresiones de ordenamiento controlan cómo se clasifican los resultados de búsqueda. Puede especificar expresiones de ordenamiento en la cláusula de consulta para ordenar los resultados. Open Search utiliza un enfoque de clasificación en dos fases: la clasificación aproximada (primera fase) reduce los candidatos, y la clasificación fina (segunda fase) determina el orden final.
Para obtener más información, consulte Configure sort expressions.
Crear una expresión de clasificación aproximada
En la consola de Open Search, vaya a Search Algorithm Center > Sort Configuration para abrir la página Policy Management.
-
Haga clic en Create para agregar una expresión de clasificación aproximada. Seleccione campos representativos como la puntuación de texto y la puntuación de actualidad. La clasificación aproximada afecta significativamente el rendimiento de la búsqueda, así que elija los campos con cuidado.
En el paso de información básica, seleccione la Target Application y su entorno, e introduzca un Policy Name. El nombre debe tener entre 1 y 30 caracteres, comenzar con una letra y puede contener mayúsculas, minúsculas, dígitos y guiones bajos (_). Establezca Type en Expression y luego haga clic en Next.
En el paso de configuración de ordenamiento, establezca Scoring Feature en
static_bm250y Weight en1, y luego haga clic en Finish.
Crear una expresión de clasificación fina
Agregue una expresión de clasificación fina para la puntuación de relevancia de texto.
En la página de información básica del asistente Create Policy, introduzca un Policy Name, establezca Application Scope en Fine Sort, configure Type en Expression y luego haga clic en Next para ir al paso de configuración de ordenamiento.
En el editor de expresiones de ordenamiento, introduzca text_relevance(title) y luego haga clic en Finish.
Comparar resultados de ordenamiento
En la página Search Test, compare los resultados de una consulta estándar con una consulta que aplica la expresión de ordenamiento.
Seleccione el índice test_han_indexes y establezca el tipo de aplicación en Online Application. Introduzca query=title:'裙子' y establezca la cláusula config en start:0. La página muestra los resultados de dos políticas de clasificación fina lado a lado para que pueda verificar el efecto de su configuración de clasificación fina.
Paso 7: Agregar sugerencias desplegables y predicción de categorías
Sugerencias desplegables
Las sugerencias desplegables ayudan a los usuarios a encontrar consultas más rápido mientras escriben, lo que reduce el esfuerzo de entrada en la búsqueda de comercio electrónico. Para obtener instrucciones de configuración, consulte Drop-down suggestions.
Predicción de categorías
La predicción de categorías identifica la categoría de producto a la que probablemente se dirige una consulta de búsqueda. Para obtener instrucciones de configuración, consulte Category prediction.
Paso 8: Controlar la diversidad de resultados y el filtrado
Cláusulas distinct
Cuando varios productos de un solo proveedor obtienen una puntuación alta, pueden dominar la página de resultados. Las cláusulas distinct imponen diversidad para que los resultados incluyan productos de múltiples proveedores. Para obtener más información, consulte Distinct clauses.
Cláusulas filter
Las cláusulas filter permiten a los usuarios limitar los resultados por rangos de atributos, como el precio. Para obtener más información, consulte Filter clauses.
El siguiente código Java muestra cómo filtrar por rango de precios:
if(!lowPrice.equals("")){
queryElement.addFilter("price>=" + lowPrice);
}
if(!highPrice.equals("")){
queryElement.addFilter("price<=" + highPrice);
}
Lo que ha creado
Después de completar estos pasos, su prototipo de búsqueda de comercio electrónico admite:
Búsqueda por palabras clave de múltiples atributos en tablas unidas
Análisis de consultas con corrección ortográfica, palabras vacías, sinónimos y reconocimiento de entidades nombradas
Clasificación de relevancia en dos fases con expresiones de clasificación aproximada y fina
Sugerencias desplegables y predicción de categorías
Diversidad de resultados con cláusulas distinct y filtrado de precios con cláusulas filter
Open Search proporciona API y SDK de búsqueda para que pueda integrar estas capacidades en su aplicación sin necesidad de crear y mantener una infraestructura de búsqueda personalizada.
Siguientes pasos
API overview -- integre la búsqueda en su aplicación
SDK overview -- utilice SDK específicos del lenguaje
Query analysis -- explore funciones adicionales de procesamiento de consultas
Configure sort expressions -- realice fine-tune de la clasificación de resultados