🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️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

ABAP HANA La búsqueda de textos y el análisis de datos no estructurados

Lección 4: Búsquedas de textos y Análisis de datos no estructurados

Analizaremos las nuevas opciones que nos brinda SAP HANA en lo que se refiere a Búsqueda de textos y el Análisis de datos no estructurados.

CAP 1. Introducción a la búsqueda de textos y Análisis de datos no estructurados

SAP HANA ofrece una función para analizar datos no estructurados.

Al aprovechar esa capacidad, podemos mejorar considerablemente la facilidad de uso de los escenarios de búsqueda dentro de las aplicaciones ABAP.

Además, podemos obtener más información al reconocer los patrones en los conjuntos de datos existentes.

NOTA: En los últimos años, casi ninguna otra funcionalidad ha experimentado un impulso tan grande desde Internet como la búsqueda en grandes conjunto de datos, independientemente de si se busca a través de un catalogo de productos, la guía telefónica y todo Internet.

1.1 – Las ayudas de búsqueda y la búsqueda de textos.

Las ayudas de búsqueda representan un excelente escenario de uso para las búsquedas de texto en SAP HANA.

Cuando se utilizan las ayudas de búsqueda, los usuarios a veces buscan una entrada en un conjunto de datos grande sin conocer los detalles de la entrada, o al menos sin tener estos detalles a mano.

Debido a que el número de cliente no está disponible para nosotros, entonces ingresamos información como puede ser el nombre de la empresa, el país, la ubicación y la industria en un plantilla de entrada compleja, a menudo tenemos que introducir esta información varias veces usando comodines como el asterisco.

Además, si escribimos incorrectamente una entrada o los datos se almacenan de una manera diferente en la BD, generalmente no obtendremos ningún resultado.

1.2– 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 funcionan de manera similar a las búsquedas modernas de INTERNET.

Proporcionan una cierta tolerancia a los errores y pueden procesar términos y sinónimos multilingües.

Dicha ayuda de búsqueda podría consistir en un campo de entrada que interpreta correctamente una solicitud de usuario como “buenes eures tele”, a pesar de la ortografía incorrecta y la búsqueda a través de varias columnas.

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, también conocida como Búsqueda difusa o Fuzzy search.

1.3– Reconocimiento de patrones.

El reconocimiento de patrones en textos y documentos representa un tipo completamente diferente de función de análisis de texto.

Podemos usar esta función en muchos escenarios diferentes: por ejemplo, para evitar tener clientes duplicados en los datos maestros es posible que deseemos verificar en el sistema si ya existe un cliente similar en el conjunto de datos antes de crear uno nuevo, y de ser así, notificarlo al usuario.

En este contexto, ser “similar” podría significar que el apellido y la dirección del cliente nuevo y los existentes, son casi idénticos.

1.4– Reconocimiento de patrones en SAP HANA

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 los textos.

Por ejemplo, podemos reconocer las relaciones e incluso las intenciones o emociones dentro de los textos.

Supongamos que ejecutamos una tienda web que permite a los clientes ordenar productos en línea y publicar comentarios sobre los productos y el proveedor.

El análisis de sentimientos es una parte de la funcionalidad del motor de texto en SAP HANA y nos permite reconocer patrones en estos tipos de datos no estructurados.

En el contexto de la tienda web, nos permitiría analizar si un producto específico provoca comentarios más positivos o negativos.

CAP 2. Principios básicos de la búsqueda de textos en SAP HANA

El objetivo principal de la función de búsqueda de texto en SAP HANA es proporcionar a los usuarios una usabilidad optimizada de las interfaces de búsqueda.

Además de varias características comunes en los motores de búsqueda de Internet, esto incluye funciones con un significado especial para las aplicaciones empresariales, como lista de sinónimos específicas de la industria.

Características de la búsqueda de texto en SAP HANA

Búsqueda de estilo libre.

El usuario no necesita saber las columnas exactas de la base de datos en las que se supone que se realizará la búsqueda.

Búsqueda tolerante a errores (búsqueda difusa o fuzzy search)

El usuario 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 al usuario en tiempo real.

Ranking de resultados.

La secuencia de los resultados de la búsqueda se optimiza para que los resultados con la tasa de probabilidad más alta se presenten en la parte superior de la lista.

Facetas de búsqueda.

Los resultados de la búsqueda se cuentan y 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 texto (particularmente análisis de sentimiento.

Se extrae información adicional de los textos, lo que nos permite obtener información sobre aspectos semánticos.

2.1 – Búsqueda tolerante a errores.

La búsqueda difusa o tolerante a errores (fuzzy search) implica la búsqueda de cadenas de caracteres (es decir, la solicitud de búsqueda) en datos basados en texto, donde los datos no tienen que corresponder exactamente con la solicitud de búsqueda. De esta manera también se incluyen entradas similares en el conjunto de resultados.

Los algoritmos matemáticos que forman la base de algoritmos de búsqueda borrosa determinan el grado en el que un registro de datos debe corresponder a la solicitud de búsqueda.

En la actualidad, es muy complicado determinar el grado de similitud entre los textos, e implica el uso de variantes y heurísticas que tienen sus ventajas y desventajas según el escenario en el que se usen.

La función de búsqueda de texto en SAP HANA determina un valor de 0 y 1 que marca el grado de similitud.

Como programador, debemos definir un valor de umbral (por ejemplo, 0,8) a partir del cual un valor del conjunto de datos que se ha buscado se clasifica de acuerdo con la solicitud.

Expresiones utilizadas en las búsquedas:

Cuando ejecutamos una búsqueda difusa, podemos usar un conjunto de expresiones simples que permiten a un experto formular solicitudes de búsquedas más precisas.

Por ejemplo, esto incluye la opción de imponer una búsqueda exacta para una parte especifica de la solicitud de búsqueda o usar expresiones lógicas.

Algunas expresiones de muestra de búsqueda de texto de SAP HANA.

Pedido de Búsqueda Explicación

Lufthansa o united Los resultados que son similares a “Lufthansa “ o “United”

Airline-united Los resultados que son similares a “airline” pero no a “united”

Búsqueda lingüística

Para determinar el grado de solicitud, también es útil incluir aspectos gramaticales y otros aspectos lingüísticos

En este contexto, los términos vuelven a su origen en palabras para que se reconozcan las variantes de palabras como “casa”, “casas”, “vivienda”, etc.

Además, la búsqueda lingüística ofrece oportunidades para el manejo de textos multilingües y solicitudes de búsqueda.

Lista de sinónimos.

La búsqueda difusa también puede extenderse por listas de sinónimos.

En este contexto, podemos almacenar una lista de términos que son equivalentes a un término específico, la solicitud de búsqueda puede luego basarse en esta lista.

Por ejemplo, “notebook” puede considerarse como un sinónimo de “laptop” o “monitor” como un sinónimo de “pantalla”.

Stop words. (noise words)

Otra opción para implementar una búsqueda más inteligente es familiarizar el sistema con las características semánticas de términos específicos.

En este contexto, términos como “S.A.” o “Inc.” No son tan selectivos como el nombre real de la empresa cuando se busca una compañía específica.

Por lo general es más importante ingresar el nombre de una empresa similar al que se está buscando que ingresar que el resultado de la búsqueda sea un “S.A”, por ejemplo.

Del mismo modo, en textos más largos, como descripciones de productos, las similitudes en ciertas partes del discurso, como los artículos y los pronombres, son menos importantes que las similitudes en los nombres dentro del texto. Por ejemplo, en las marcas.

CAP 3. Tipos de datos de texto e índices de texto completo en SAP HANA

La búsqueda difusa en SAP HANA se basa en los tipos de datos del almacén de columnas.

Aquí, TEXT y SHORTTEXT representan dos tipos de datos específicos que se dedican a búsquedas de texto (y análisis de texto).

El tipo de datos SHORTTEXT se usa para cadenas de caracteres de una longitud determinada, mientras que TEXT representa un objeto grande.

Soporte en ABAP.

Desafortunadamente, actualmente no hay soporte nativo disponible en ABAP para los tipos TEXT y SHORTTEXT, lo que hace que sea imposible crear una tabla a través del DDIC que usa estos tipos de datos.

Además, aunque la función de búsqueda difusa también es compatible con otros tipos de datos (VARCHAR y NVARCHAR), 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 modernas.

Índice de texto completo (Full Text Index)

Sin embargo, lo que puede hacer es agregar la funcionalidad ofrecida por los Tipos de datos de texto a una columna especifica mediante la creación de un índice de texto completo.

De esta manera podemos habilitar las funciones de texto y análisis de texto para la mayoría de los tipos DDIC de tipo carácter (incluidos CHAR, STRING, DATS, etc.).

Cuando creamos un índice de texto completo, (Full Text Index) para una columna de la tabla, el sistema crea una columna interna invisible (columna sombreada) del tipo TEXTO, que contiene los mismos datos, pero en una representación optimizada para las solicitudes de búsqueda. En este contexto, el texto se fragmenta en Tokens y se genera un diccionario adicional.

Usando SQL para la creación.

Podemos crear el índice de texto completo (Full Text Index) utilizando la sentencia SQL CREATE FULLTEXT INDEX:

CREATE FULLTEXT INDEX <index name>

ON <table name> ( <column name> )

[<parameter list>]

NOTA: Podemos obtener documentación completa acerca de las sentencias de creación de los “full text index” en el “help.sap.com/hanna”. Debemos tener en cuenta que el nombre del índice de texto completo “full text index” debe ser único dentro de un esquema, por lo que tiene sentido prefijar el nombre del índice con el nombre de la tabla base de datos para evitar posibles conflictos de nombres.

Creación en el diccionario de datos ABAP (DDIC).

La siguiente instrucción SQL define un índice de texto completo para la columna CARRNAME de la tabla SCARR.

CREATE FULLTEXT INDEX scarr~name ON scarr(carrname)

NOTA: Debido a que no podíamos crear índices de texto completo (Full Text Index) a través del DDIC (Tx SE11) antes de la versión 7.4 de ABAP, estos índices no se pueden transportar automáticamente.

A partir de la 7.4, también es posible crear un índice de texto a través del DDIC utilizando parámetros comunes.

Para esto, debemos definir un nuevo índice para una tabla utilizando la Tx SE11 o, más bien, un índice de extensión (para una extensión sin modificación se una tabla estándar de SAP).

Esto contiene solo la columna requerida como un campo y se crea exclusivamente en la base de datos SAP HANA.

A través de Goto / Full text Index podemos activar el índice te texto completo y configurar una variedad de parámetro

CAP 4. Uso de la búsqueda de textos a través de SQL

La palabra clave CONTAINS.

Tal como sucede con la mayoría de las funciones en SAP HANA, podemos invocar la búsqueda de texto a través de SQL.

Para esto, debemos usar la sentencia SELECT con la palabra clave CONTAINS, que nos permite llamar a las múltiples variantes de la búsqueda de texto.

SELECT <fields list>

FROM <table of view>

WHERE CONTAINS (<columns>,<search requets>,<parameter>:

El siguiente ejemplo proporciona una idea inicial de cómo podemos usar la cláusula CONTAINS para una búsqueda difusa, fuzzy search.

SELECT * FROM scarr WHERE CONTAINS( carrname, ‘lusthansa’,

FUZZY(0.8) ):

Aunque la solicitud de búsqueda contiene dos errores (el termino de búsqueda comienza con minúsculas y contiene una letra incorrecta), el sistema devuelve el registro esperado, “Lufthansa”.

El parámetro FUZZY.

Debemos saber que el parámetro Fuzzy (0.8) define el valor del umbral, donde un valor entra 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.

Además del valor del umbral, FUZZY proporciona muchas otras opciones de configuración.

Búsqueda Exacta / Búsqueda lingüística.

Aparte de utilizarla con el parámetro FUZZY, podemos usar la sentencia CONTAINS en otras dos variantes: EXACT y LINGUISTIC.

En las búsquedas con la adición EXACT, el sistema busca coincidencias exactas para la solicitud de búsqueda con palabras completas (según la tokenización del texto en la base de datos).

EXACT también representa el valor predeterminado si no ingresamos ningún parámetro.

En este caso, también podemos utilizar comodines como ‘*’ en la solicitud de búsqueda.

A diferencia de un LIKE en SQL estándar, la cláusula CONTAINS nos permite realizar búsquedas en varias columnas.

En el ejemplo vemos una búsqueda exacta cuyos nombres o direcciones contienen “Líneas aéreas” o “Líneas aéreas” o terminan con “.com”.

SELECT * FROM scarr WHERE CONTAINS ((carrname, url), ‘Airlines OR Airways OR *.com”, EXACT).

Este ejemplo también es útil para demostrar los efectos de un índice de texto completo (Full tet Index) faltante.

Si no existe un índice de texto completo para la columna carrname, los nombres no se dividirán en palabras (tokens), en consecuencia, no habrá una coincidencia exacta entre la solicitud de búsqueda ‘Aerolineas’ y una entrada como ‘United Airlines’.

NOTA: Tal como mencionamos podemos utilizar SQL para búsquedas de texto en SAP HANA. Sin embargo actualmente hay un par de limitaciones con respecto a las combinaciones que son compatibles, una de ellas es que solo podemos utilizar la cláusula CONTAINS para la búsqueda de texto en tablas que sean columnares y otra es que no podemos utilizar la función de búsqueda de textos para los atributos calculados de una vista.

4.1 – Búsqueda difusa (Fuzzy Search)

Podemos usar la función de búsqueda difusa para una búsqueda simple en una o varias columnas de una tabla o vista.

La cláusula CONTAINS nos permite especificar varias columnas para que sean consideradas durante la ejecución de la búsqueda.

El siguiente ejemplo indica una búsqueda en el horario de vuelo a ‘Tokio’.

SELECT * FROM spfli WHERE CONTAINS ((cityfrom, cityto), ‘Tokio’, fuzzy(0.8)).

NOTA: Para este propósito, fue necesario definir un índice de texto completo para el campo CITYFROM y otro para el campo CITYTO utilizando el DDIC.

El resultado contendrá todos los vuelos que salen y llegan a Tokio, aunque la ortografía del nombre de la ciudad se desvíe ligeramente

NOTA: Existen funciones escalares especiales que nos permiten recuperar información adicional para registros de datos individuales en el conjunto de resultados.

La función SCORE proporciona información sobre el grado de similitud entre el resultado de búsqueda y la solicitud de búsqueda.

Este valor oscila entre 0 y 1. Con valores más altos indica un mayor grado de similitud. Normalmente la función se usa para ordenar los resultados de la búsqueda de modo que los resultados con un mayor grado de similitud se muestren en la parte superior de la lista.

En búsquedas a través de textos más largos es particularmente útil para los usuarios si la ubicación exacta encontrada de una solicitud de búsqueda se resalta en el texto. Para este propósito SAP HANA SQL ofrece la función de highlighted (resaltado) y snippets (fragmentos). Si se usa highlighted el sistema devuelve el texto completo con la ubicación encontrada resaltada. Si se utiliza snippets solo se devuelve un extracto del texto alrededor de la ubicación encontrada.

CAP 5. Uso de la búsqueda de textos en ABAP

Las ayudas de búsqueda son una excelente opción para utilizar la búsqueda de textos en SAP HANA.

NOTA: ABAP 7.4 proporciona varias mejoras mas allá de soportar la búsqueda difusa, por ejemplo, ahora es posible en el SAP GUI mostrar valores directamente a los usuarios mientras están introduciendo texto.

Existen algunos requisitos para poder utilizar las opciones avanzadas de las ayudas de búsqueda y estos son contar son ABAP 7.4 SP06 o superior y tener instalado al menos SAP GUI 7.3 para Windows o SAP GUI 7.4 para Java/Html.

Como desarrollador, podemos definir una ayuda de búsqueda declarativamente de tal manera que especifique el nombre de una tabla o vista y seleccione los campos para el cuadro de diálogo.

A partir de ABAP 7.4, SP06, también podemos especificar los parámetros para una búsqueda aproximada aquí.

Para este propósito, utilizaremos la Tx SE80 o la Tx SE11 para crear una nueva ayuda de búsqueda y seleccionar una tabla o vista como fuente de datos.

En las opciones avanzadas (Enhanced Options) de la ayuda de búsqueda, podemos seleccionar: si los valores se muestran directamente, si se ejecuta una búsqueda de texto completo en varias columnas y que nivel de detalle se aplica.

No es necesario crear un índice de texto completo (Full Text Index) para este propósito. Después de la activación, podemos integrar la ayuda de búsqueda con un programa de prueba.

REPORT zr_a4h_chapter9_valuehelp.

PARAMETERS: cust_id TYPE s_customer MATCHCODE OBJECT za4h_book_f4_fuzzy.

Finalmente veremos en pantalla la nueva potencialidad de las ayudas de búsqueda en donde los valores se muestran a medida que el usuario escribe en pantalla.


 

 

 


Sobre el autor

Publicación académica de Juan Hernández, en su ámbito de estudios para el Máster ABAP for HANA.

SAP Master


Juan Hernández

Profesión: Programador Informático - España - Legajo: XQ15K

✒️Autor de: 125 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: PartTime

Certificación Académica de Juan Hernández