
Busqueda de textos y análisis de datos no estructurados: SAP HANA ofrece una función para analizar datos no estructurados.
Al aprovechar esta 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.
En los úlimos años, casi ninguna otra funcionalidad ha experimentado un impulso tan grande desde: Intemet como la búsqueda en grandes conjuntos de datos, independientemente de si se busca a través de: un catálogo de productos, la guía telefónica o toda Internet.
Ayudas de Búsqueda y la búsqueda de datos: representan un excelente escenario de uso para las busquedas de texto en SAP HANA.
Las aplicacion SAP contienen ayudas de búsqueda en muchos lugares diferentes.
Cuando se utilizan las ayudas de busqueda, los usuarios a veces buscan una entrada en conjunto de datos grande sin conocer los detalles de la entrada, o al menos sin tener estos detalles a mano.
Por ejemplo, podemos estar buscando un cliente específico en Argentina que tenga su sede en Buenos aires, y trabaje en la industra de las telecomunicaciones.
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 ubicacion y la industria en una plantilla de entrada compleja, a menudo tenemos que introducir esta información varias veces usando comodines como el asterisco (*).
Ademas, si escribimos incorrectamente una entrada o los datos se almacenan de una manera diferente en la base de datos (por ejemplo, si el nombre de la ubicacion se ingresó usando la ortografía específica del país), generalmente no obtendremos ningún resultado.
Las Ayudas de búsqueda y la Búsqueda de textos en SAP HANA: permite desarrollar ayudas de búsqueda que funcionan de manera similar a la busquedas modernas en internet.
Proporcionan una cierta tolerancia a los errores y pueden procesar términos y sinónimos multilingües.
Búsqueda difusa o Fuzzy Search: cuando los usuarios no siempre pueden determinar fácilmente si el resultado devuelto es el esperado en este tipo de búsqueda tolerante a errores.
Reconocimiento de Patrones en texto y documentos: representa un tipo completamente diferente de función de análisis de texto.
Se puede usar esta función en muchos escenarios diferentes: por ejemplo, para evitar tener socios comerciales 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 un nuevo cliente y, de ser asi, notificarlo al usuario de la aplicacion.
En este contexto, ser "Similar" podría significar que el apellido y la dirección de un cliente nuevo y existente son casi idénticos.
Como sucede a menudo, los nombres y direcciones en particular se ingresan con diferentes tipos de ortografía, una simple comprobación de entradas idénticas rara vez arroja resultados satisfactorios.
Reconocimiento de patrones en SAP HANA: no solo 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 linea y publicar comentarios sobre los productos y el proveedor.
El análisis de sentimientos es 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 en línea, por ejemplo, permitiría analizar si un producto específico provoca comentarios más positivos o negativos.
Los principios básicos de la 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 carcterísticas comunes en los motores de búsqueda de internet, esto incluye funciones con un significado especial para las aplicaciones empresariales, como listas de sinónimos específicas de la industria.
Caracteristicas de la búsqueda de texto de SAP HANA:
Busqueda de estilo libre: el usuario no necesita saber las columnas exactas de la BD en las que se supone que se realizará la busqueda.
Por ejemplo, puede implementar una búsqueda de direcciones en un solo campo de entrada e incluir todas las características técnicas, como el nombre de la calle, el código postal, la ciudad, el país, etc.
Búsqueda tolerante a errores (busqueda difusa o Fuzzy Search): el usuario puede variar la ortografía ligeramente en su solicitudes de búsqueda.
Busqueda Lingüística y Busqueda de sinónimos: se incluyen variantes lingüísticas y terminos 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: 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 especificos. Por ejemplo, al buscar aerolíneas, podemos ver la distribucion de las aerolíneas por país.
Análisis de texto (particularmente análisis de sentimiento): Se extrae informacion adicional de los textos, lo que permite obtener información sobre aspectos semánticos.
Búsqueda tolerante a errores (Busqueda difusa o fuzzy seach): implica la búsqueda de cadenas de caractere (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, tambien se incluyen entradas similares en el conjunto de resultados.
Los algoritmos matemáticos que forman la base de los algoritmos de búsqueda borrosa determinan el grado en que un registro de datos debe corresponder a la solicitud de la búsqueda.
El resultado del cálculo es a menudo un valor numérico utilizado para decidir si un registro de datos es lo suficientemente similar a la solicitud de búsqueda.
El resultado del cálculo es a menudo un valor numérico utilizado para decidir si un registro de datos es lo suficientemente similar a la solicitud de lbúsqueda.
En la práctica, es muy complicado determinar el grado de similitud entre los textos, e implica el uso de variantes y huerístivas que tienen sus ventajas y desventajas según el escenario en el que se usen.
La funcion de búsqueda de texto en SAP HANA determina un valor entre 0 y 1 que marca el grado de similitud.
Como programador, se debe definir un valir 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.
Además, la funcionalidad de la búsqueda difusa (fuzz search) se puede adaptar para tipos de datos especificos (semánticos).
Por ejemplo, la busqueda difusa de una fecha puede incluir valores de fecha que se realicen varios dias antes o después de la fecha específica que se busca.
En este caso, el criterio de similitud es el período en lugar de la somilitud de la cadena de caracteres (Por lo tanto, segun este criterio, la fecha 01/01/1909 no es similar al 01/01/1990, aunque la posición de un solo caracter ha sido cambiado).
Expresiones utilizadas en las búsquedas: Cuando se ejecuta una búsqueda difusa, se puede usar un conjunto de expresiones simples que permiten a un experto formular solcitudes de búsqueda más precisas.
Por ejemplo, esto incluye la opción de imponer una búsqueda exacta para una parte específica de la solicitud de búsqueda o usar expresiones lógicas.
La tabla 1.1 contiene algunas expresiones de muestra de la búsqueda de texto de SAP HANA basada en el ejemplo de una búsqueda de líneas aéreas.
Avion o pasaporte: los resultados que son similares a "Avion" o "pasaporte"
Avion-pasaporte: los resultados que son similares a "Avion" pero no a "pasaporte".
"Avion pasaporte": los resultados que son similares a la expresion entera "avion pasaporte" y no solo a sus componentes separados.
Búsqueda lingüística: para determinar el grado de similitud, tambien 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", "Viivienda", etc.
Ademas, la busqueda lingüística ofrece oportunidades para el maneja de textos multilingúes y solicitudes de búsqueda.
Lista de Sinónimos: la búsqueda difusa tambien puede extenderse por listas de sinónimos.
En este contexto, se puede 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".
Esta caracteristica es particularmente útil para abreviaturas y conceptos específicos de la industria.
Stop Words: otra opción para implementar una búsqueda más inteligente es familiarizar el sistema con las caraterísticas semánticas de términos específicos.
En este contexto, es importante saber que no todos los términos en una solicitud de búsqueda tienen la misma selectividad.
Por ejemplo, terminos como "S.A" o "Inc" no son tan selectivos como el nombre real de la empresa cuando se busca una compañia específica.
Por lo tanto, por lo general, es más importante ingresar el nombre de una empresa similar al que está buscando que ingresar que el resultado de la busqueda sea un "S.A." por ejemplo.
Del mimso modo, en textos más largos, como descripciones de productos, las similitudes en ciertas partes del discurso, como los artículos o los pronombres, son menos importantes que las similitudes en los nombres dentro del texto (por ejemplo, en las marcas).
Cuando ejecutamos una solicitud de búsqueda en SAP HANA, se puede ingresar una lista de las llamadas stop words (tambien denominadas noise words) que se consideran menos importantes que otras palanbras.
Tipos de datos de texto y los í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 las búsquedas de texto (y análisis de texto).
El tipo de datos SHORTTEXT se usa para cadenas de caracteres de una longitur determinada, mientras que TEXT representa un objeto grande.
En este contexto, los textos se fragmentan internamente en tokens que forman la base para búsquedas y análisis.
Soporte en ABAP: desafortunadamente, actualmente no hay soporte nativo disponible en ABAP para los tipos de datos 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 (por ejemplo, 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 de búsqueda modernas.
Índice de texto completo (Full Text Index): lo que puede hacer es agregar la funcionalidad ofrecida por los tipos de datos de texto a una columna específica mediante la creación de un índice de texto completo.
De esta manera, se podria habilitar las funciones de búsqueda 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 se crea un índice de texto completo 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 presentacion optimizada para las soluciones de búsqueda. en este contexto, el texto se fragmenta en tokens y se genera un diccionario adicional.
Se puede obtener documentacion completa acerca de la sentencia de creacion de los FULLTEXT INDEX en la pagina help.sap.com/hana y se debe tener en cuenta que el nombre del indice de texto completo (FULLTEXT INDEX) debe ser unico dentro de un esquema por lo que tiene sentido fijar el nombte del indice con el nombre de la BD para evitar posibles conflictos de nombres.
Debido a que no se podia crear índices de texto completo (Full Text Index) a través del diccionario de datos DDIC (transaccion SE11) antes de la versón de ABAP, estos índices no se pueden transportar automaticamente.
A partir de la versón 7.4 de ABAP, también es posible crear un índice de texto completo a través del DDIC utilizando parámetros comunes.
Para este propósito, debemos definir un nuevo índice para una tabla utilizando la transaccion SE11 o, más bien, un índice de extensión (para una extensión sin modificacion de 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.
La configuración estándar y la configuración de idioma (utilizando una columna de la tabla o un idioma fijo) suelen ser suficientes para una búsqueda difusa.
El uso de la búsqueda de textos a través de SQL
La palabra clave CONTAINS: tal como sucede con la mayoria de las funciones en SAP HANA, podemos invocar la búsqueda de texto a través de SQL
El parámetro FUZZY: el paramtro 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.
Además del valor de umbral, el parámetro FUZZY proporciona muchas otras opciones de configuracion.
Búsqueda Exacta / Búsqueda Lingüística: aparte de utilizarla con el parámetro FUZZY se puede usar la sentencia CONTAINS en otras dos variantes: EXACT y LINGUISTIC.
En las busquedas con la adicion EXACT, el sistema busca coincidencias exactas para la solciitud de busqueda con palabras completas (segun la tokenizacion del tecto en la BD).
EXACT también representa el valor predeterminado si no se ingresa ningun parametro.
En este caso, tambien se puede utlizar comodines como "*" en la solicitud de busqueda.
A diferencia de un LIKE en SQL estandar, la clausula CONTAINS permite realizar busqueda en varias columnas.
Se puede usar SQL para busqueda de texto en SAP HANA sin embargo existe par de limitaciones con respecto a las combinaciones que son compatibles, una de ellas es que solo se puede usar la clausula CONTAINS en busqueda de texto en tablas que sean columnares y la otra es que no se puede usar la funcion de busqueda de texto para los atributos calculados de una vista.
La busqueda difusa (Fuzzy Search): Se puede usar la funcion de busqueda difusa para una busqueda simple en una o varias columnas de una tabla o vista.
La clausula CONTAINS nos permite especificar varias columnas para que sean consideradas durante la ejecucion de la busqueda.
Existen funciones escalares especiales que permite recuperar informacion adicional para registros de datos individuales en el conjunto de resultados. La funcion SCORE proporciona informacion sobre el grado de similitud entre el resultado de busqueda y la solicitud de busqueda, este valor oscila entre 0 y 1 con valor mas alto que indica un grado mayor de similitud, normalmente la funcion se usa para ordenar los resultado de la busqueda de modo que los resultado con un mayor grado de similitud se muestren en la parte superior de la lista. En busqueda a traves de textos mas largos es particularmente util para los usuarios si la ubicacion exacta encontrada de una busqueda se resalta en el texto, para esto SAP HANA SQL ofrece las funciones HIGHLIGHTED y SPLIT se usa HIGHLIGHTED el sistema devuelve el texto completo con la ubicacion encontrada resaltada si se utiliza SPLIT solo te devuelve un extracto de texto de la ubicacion encontrada.
Uso de la busqueda de textos en ABAP
Las ayudas de busqueda son una excelente opcion para utilizar la busqueda de textos en SAP HANA.
Para ello, se debe crear la ayuda de busqueda en el diccionario de datos ABAP.
ABAP 7.4 proporciona varias mejoras mas alla de soportar la busqueda difucsa o Fuzzy Search, por ejemplo ahora es posible en el SAP GUI mostrar valores directamente a los usuarios mientras entan ingresando texto.
Existen algunos requisitos para poder utilizar las opciones avanzadas de las ayudas de busqueda y estos son contar con ABAP 7.4 SP06 o superior y tener instlaado al menos SAP GUI 7.3 para Windows o SAP GUI 7.4 para Java/Html.
Como desarrollador, se puede definir una ayuda de busqueda declarativamente de tal manera que especifique el nombre de una tabla o vista y seleccione los campos para el cuadro de dialogo.
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 transacción SE80 o la transacción 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, se puede seleccionar: si los valores se muestran directamente se ejecuta una búsqueda de texto completo en varias columnas y qué nivel de detalle se aplica.