Resultados de búsqueda ({{result_messages.length}})

{{ humanReadableFields(last_search_query) }}

Conversación

Búsqueda de usuarios ({{result_users.length}})

Usuario   {{ app2.name }} TOTAL
{{ result_user.name }} {{ result_user.perPlatform[app2.code] }} {{ result_user.totalMessages }}

Dashboard

{{ app2.msgCount }}
{{ app2.name }}
{{ total_messages }}
Total

Visor de mensajes MI

Piloto demostrador de aplicación de búsqueda y visualización de mensajes MI almacenados en Solr

Secciones de la aplicación

En estas tarjetas se describe la funcionalidad de cada parte del aplicativo

La sección se resaltará al pasar el ratón por encima de la tarjeta

Contenido principal
En esta sección se muestran los resultados de las búsquedas
Búsqueda global
Permite la búsqueda en todos los valores textuales de todos los mensajes almacenados, de forma simultánea
Menú de resultados
Estos botones permiten en cambio entre las distintas visualizaciones de resultados encontrados: Mensajes, Usuarios, etc.
Opciones generales
Estas opciones permiten cambiar varios aspectos de la visualización de la aplicación
Formulario de búsqueda
Menú desplegable que permite el acceso a todos los campos de búsqueda, en base a diferentes criterios
Búsquedas anteriores
En esta parte del interfaz se muestran las últimas búsquedas ejecutadas, de forma que se puedan repetir de forma sencilla y rápida
... Mas ayuda

El tab "Ayuda sobre las búsquedas" (sobre la primera tarjeta) le dará indicaciones sobre cómo realizar las búsquedas.

El resto de tabs ofrecen información sobre la implementación de este piloto, tanto en presente, como en un posible futuro.

Términos
Los campos textuales de los distintos mensajes se cortan en términos (palabras) separados por espacios y signos de puntuación. Una búsqueda de una palabra, BUENOS, sólo devolverá los contenidos que contengan esa palabra completa.
No devolverá el término DESHONRABUENOS
Al indexar un mensaje, se eliminan las tildes de los términos (DÍAS se indexará como DIAS). Adicionalmente, se cambia todo el texto a minúsculas.
Una búsqueda con dos palabras, BUENOS DÍAS buscará mensajes que contengan una u otra palabra (ordenado por score, se primarán los mensajes con ambos términos)
Búsquedas literales
"..." (comillas dobles)
Una búsqueda con dos (o mas) palabras entrecommilladas "COMPRA PAN" buscará mensajes que contengan ambas palabras en el orden indicado
Téngase en cuenta que algunas palabras comunes se eliminan del texto: proposiciones, artículos, etc. (el, las, a, entre, cuando...). La búsqueda" "COMPRA EL PAN" es idéntica en sintaxis y resultados a "COMPRA PAN"
Términos requeridos
+ (y -)
El prefijo + hace que el término marcado deba aparecer necesariamente en el texto.

JUAN +MARTIN

Se mostrarán resultados que contengan el apellido, y opcionalmente el nombre (por score, se primarán los resultados del conjunto)
Existe el operador contrario, - (guión medio) que fuerza a que el término negado no se encuentre en el texto
Operadores lógicos
OR y AND
Estos operadores permiten fijar la opcionlidad u obligariedad de los términos que separan (equivaliendo a 'a O b' y 'a Y b')

+JUAN +(MARTIN OR MARIN)

Se mostrarán resultados que contengan el nombre y uno de los apellidos indicados

AMIGO AND "JUAN MARTIN"

Se mostrarán resultados que contengan tanto el nombre completo, como el término amigo
Carácteres comodín (I)
Asteriscos

FEDE*

Mostrará contenidos con una palabra que comience con el texto FEDE
federico, federado, federal

*RICO

Mostrará contenidos con una palabra que termine con el texto RICO
federico, borrico, panrico

*EDER*

Mostrará contenidos con una palabra que contenga el texto EDE
federico, cederá, exceder
El asterisco sustituye a uno o mas carácteres en una palabra
Carácteres comodín (II)
Interrogación

MARI?

Mostrará contenidos con una palabra que comience con el texto MARI, de cinco caractéres de longitud
maría, mario, marín

20??

Mostrará contenidos con una palabra que comience con el texto 20, de cuatro caractéres de longitud
2021, 2013, 20cc, 20mm
El carácter de interrogación sustituye a un solo carácter en una palabra
Búsquedas por similitud
~Tilde (Alt Gr + 4)

HERNANDEZ~

Mostrará contenidos con palabras similares a HERNÁNDEZ.
Los primeros resultados serán aquellos que contengan directamente el término HERNÁNDEZ, seguidos por aquellos mas similares, como FERNÁNDEZ. Otros aún parcialmente semejantes vendrán a continuación: HERNANDO, FERNANDO, etc.
El algorirmo de similitid se basa en la "Distancia de edición": una palabra es mas similiar a otra que una tercera en base al número de cambios (o eliminaciones) en sus caracteres que haya que hacer para convertir de una a otra.
Caracteres reservados
+ - ! ( ) { } [ ] ^ " ~ * ? : /
Estos caracteres tienen significado en la búsqueda. Para evitar que se interpreten (por ejemplo para buscar el literal +34642999999, número de teléfono con prefijo internacional) ha de "escaparse" el símbolo + precediéndolo de una barra invertida \

\+34642999999

\(2\+3\)\*2=10

"Y le dije\: largo de aqui\!"

Las cadenas && (alternativa a AND) y || (alterativa a OR) también deben ser escapadas

Esta aplicación demostrador de las búsquedas, aunque es perfectamente funcional, tiene una serie de limitaciones a causa de su arquitectura. Estas son algunas de las ideas que se podrían llegar a implementar a futuro, para establecer el sistema real en producción

Seguridad
Esta aplicación no dispone de ningún tipo de validación de usuario, ni de seguridad alguna. Cualquiera que tenga acceso a la web, tiene acceso a los mensajes que muestra. Esto no podría ocurrir en un sistema real, que debería incluir:
 
Validación de usuarios contra dominio o single-sign-on
Acceso por perfiles de usuario a una u otra información
Al identificar al usuario, se pueden almacenar sus preferencias, resultados, etc. de forma persistente
Paginación de resultados
Actualmente no se paginan los resultados: se limita el número de mensajes que se muestran a un número que puede fijar el usuario, lo que hace que se queden resultados sin mostrar. Solr permite pedir un número de resultados y un offset, lo que permite mostrar todos los resultados sin sobrecargar el sistema
Servidor
Este piloto es una página estática, que medieante Javascript/Ajax "habla" directamente con Solr. Esta es una situación que puede mejorar, en cuanto a rendimiento y gestión de carga introduciendo una parte servidor Java entre el cliente Web y el servidor Solr. También esto facilitaría dotar de persistencia a las funcionalidades del aplicativo.
Arquitectura en cluster
Se ha usado la funcionalidad standalone de Solr: sólo se usa un servidor. Sin embargo, permite una arquitectura de alta disponibilidad y balanceo de carga, que se conoce como Solr Cloud. Esto no sólo incrementea notablemente el rendimiento del aplicativo, sino que incrementa su confiabilidad ya que la caida de un nodo no impide el servicio, y, al estar replicada la información no se pierde ésta en caso de fallo catastrófico.
Base de datos
Actualmente es Solr quien sirve el contenido de los mensajes. No es la situación óptima. Almacenar los mensajes en una base de datos proporcionaría unas funcionalidades adicionales:
 
Búsquedas SQL para complementar la búsqueda textual
Reducción del tamaño de los índices Solr
Mejora del rendimiento de búsquedas, al reducir el tamaño de los índices
Persistencia
Al añadir la parte servidor al sistema, se evita que, como ocurre ahora, se pierda toda la informacion al recargar la página. El servidor puede almacenar búsquedas y resultados, así como el estado de la aplicación, para que el usuario no piedra trabajo al cerrar o recargar la página en el navegador.

Registro de cambios:

Grafo
Se ha cambiado la ocultación del grafo para que no se resetee la posición de los nodos al hacerlo visible
Grafo
Arreglo de la visualización del grafo

Estas son las tecnologías que se han usado para realizar este piloto de aplicación web

Motor de aplicación
Vue es un framework progresivo para construir interfaces de usuario. Está diseñado modularmente, basado en componentes. La librería central está enfocada solo en la capa de visualización, pero admite módulos de control de estados, flujo de navegación, etc.
Librería Javascript
JQuery es una rápida y pequeña (sin restar funcionalidades) librería de JavaScript. Facilita tareas como recorrer o buscar elementos en el documento HTML, y manipularlos, así como gestionar eventos, o usar funciones Ajax.
Estilo e interfaz
Semantic es un framework de desarrollo que ayuda a crear llamativos interfaces web adaptables, usando un HTML sencillo.
Sus clases usan una sintaxis de lenguaje natural para enlazar conceptos de forma intuitiva.
Visualización de grafos
VisJS js es una librería de visualización dinámica, basada en el navegador. Está diseñada par aser fácil de usar, y ser capaz de manejar un gran volumen de datos, permitiendo su manipulación y la interacción con dichos datos.
Almacenamiento, indexación y búsqueda
Solr es un fiable, escalable y tolearante a fallos motor de indexación y búsquedas, basado en Apache Lucene.
Proporciona un servidor de búsquedas distribuido, con replicación y balanceo de carga, configuración centralizada, e interfaz REST para su uso.
 
Búsqueda completada

No se han encontrado resultados coicidentes con los parámetros de búsqueda

Buscando mensajes...