✒️ABAP HANA La búsqueda de textos y el análisis de datos no estructurados
ABAP HANA La búsqueda de textos y el análisis de datos no estructurados
1. Las ayudas de búsqueda y la búsqueda de textos en SAP HANA
La función de búsqueda de texto de SAP HANA nos permite desarrollar ayudas de búsqueda que proporcionan una cierta tolerancia a errores y pueden procesar términos y sinónimos multilingües.
Por ejemplo, podemos ingresar "buenes eires tele" en una ayuda de búsqueda y se interpretara correctamente a pesar de la ortografía incorrecta.
Sin embargo, los usuarios no siempre pueden determinar fácilmente si el resultado devuelto es el esperado en este tipo de búsqueda tolerante a errores (Fuzzy search).
La función de análisis de texto en SAP HANA no solo nos permite realizar búsquedas dentro de los textos, sino también extraer información adicional de ellos. Podemos reconocer las relaciones e incluso las intenciones o emociones dentro de los textos. Por ejemplo, en una tienda en línea podemos saber si un producto provoca comentarios más positivos o negativos.
2. Los principios básicos de la búsqueda de textos en SAP HANA
El objetivo principal de la búsqueda de texto en SAP HANA es proporcionar a los usuarios una usabilidad optimizada de las interfaces de búsqueda.
Las características de la búsqueda de texto de SAP HANA son:
- Búsqueda de estilo libre: No se necesita conocer las columnas exactas de la base de datos en las que se supone que se realizara la búsqueda. Por ejemplo, puede implementar una búsqueda de direcciones en un solo campo de entrada e incluir todas las características, como la calle, código postal, ciudad y país.
- Búsqueda tolerante a errores (fuzzy search): Se puede variar la ortografía ligeramente en las solicitudes de búsqueda.
- Búsqueda lingüística y búsqueda de sinónimos: Se incluyen variantes lingüísticas y términos sinónimos.
- Sugerencias de valor: El sistema identifica de manera eficiente los resultados de búsqueda probables mientras el usuario escribe y los presenta en tiempo real.
- Ranking de resultados: Los resultados con la tasa de probabilidad más alta se presentan en la parte superior de la lista.
- Facetas de búsqueda: Los resultados se agrupan según criterios específicos. Por ejemplo, al buscar aerolíneas, podemos ver la distribución de las aerolíneas por país.
- Análisis de sentimiento: Se puede obtener información sobre aspectos semánticos.
2.1. Fuzzy Search
Implica la búsqueda de cadenas de caracteres en datos basados en texto, donde los datos no tienen que corresponder exactamente con la búsqueda. Algoritmos matemáticos determinan el grado de similitud entre la búsqueda y el registro de datos.
La función de búsqueda en SAP HANA determina un valor entre 0 y 1 que marca el grado de similitud.
3. Los tipos de datos de texto y los índices de texto completo en SAP HANA
TEXT y SHORTTEXT representan dos tipos de datos específicos que se dedican a búsquedas de texto y análisis de texto. Los textos se fragmentan internamente en tokens que forman la base para búsquedas y análisis. Desafortunadamente, actualmente no hay soporte nativo disponible en ABAP para estos tipos de datos, lo que hace imposible crear una tabla a través del DDIC que use estos tipos de datos.
La búsqueda fuzzy search también es compatible con otros tipos como VARCHAR y NVARCHAR, pero esta compatibilidad no es lo suficientemente extensa.
Sin la capacidad de dividir los textos en tokens de búsqueda, el sistema no puede reconocer una permutación de palabras, que es un estándar en las aplicaciones de búsqueda modernas.
3.1. Full Text Index
Sin embargo, lo que se puede hacer es agregar la funcionalidad ofrecida por los tipos de datos de texto a una columna especifica mediante la creación de un Full Text Index.
De esta manera, podemos habilitar las funciones de búsqueda y análisis de texto para la mayoría de los tipos DDIC de tipo carácter.
Cuando creamos un Full Text Index para una columna de la tabla, el sistema crea una columna interna del tipo TEXTO, que contiene los mismos datos pero en una presentación optimizada para las solicitudes de búsqueda. En este contexto, el texto se fragmenta en tokens y se genera un diccionario adicional.
Podemos crear un Full Text Index utilizando la siguiente sentencia:
CREATE FULLTEXT INDEX <index_name> ON <table_name> ( <column_name> ) [ <parameter list> ]
Antes de la versión 7.4 de ABAP no era posible crear estos índices a través del DDIC.
A partir de la versión 7.4 ya podemos crear estos índices desde la SE11.
4. El uso de la búsqueda de textos a través de SQL
Podemos invocar la búsqueda de texto a través de SQL. Para esto debemos usar SELECT con la palabra clave CONTAINS.
SELECT <field_list> FROM <table or view> WHERE CONTAINS (<columns>, <search_request>, <parameter>);
El siguiente ejemplo proporciona una idea inicial de cómo podemos usar la cláusula CONTAINS para una búsqueda fuzzy search:
SELECT * FROM scarr WHERE CONTAINS( carrname, 'lusthansa', FUZZY(0.8) );
Debemos saber que el parámetro FUZZY(0.8) define el valor de umbral, donde un valor entre 0.7 y 0.8 suele ser un buen valor estándar para obtener resultados que son relativamente similares a la solicitud de búsqueda.
También podemos usar el parámetro EXACT para buscar coincidencias exactas.
 
 
 
Sobre el autor
Publicación académica de Ricardo Daniel Tovar Barrera, en su ámbito de estudios para el Máster ABAP for HANA.
Ricardo Daniel Tovar Barrera
Profesión: Consultor Abap - Mexico - Legajo: WC52Q
✒️Autor de: 15 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Ricardo Tovar