Búsqueda más inteligente y funcionalidad de objetos recientes

Novedades

Aquí examinamos una técnica para mejorar la usabilidad en aplicaciones complejas mediante la introducción de una búsqueda más inteligente y las funcionalidades de «objetos recientes». A medida que la usabilidad se convierte cada vez más en una característica crucial de las aplicaciones, ayudar a los usuarios con la búsqueda de texto completo y las listas de objetos recientes puede resultar insuficiente. Es posible que necesites ir más allá de estas funciones, teniendo una forma de mantener el seguimiento de los objetos «más utilizados», lo cual ayudará a:

– adivinar lo que estás buscando

– encontrar lo que estás buscando

El problema

Veamos un ejemplo.

En estas semanas estás trabajando en los elementos A, B y C de tu aplicación web favorita. El viernes, en realidad, trabajaste brevemente en X, Y y Z antes de ir a casa, ya que llevabas bastante tiempo con estos en la parte inferior de tu lista de tareas pendientes. Ahora, vuelves a trabajar el lunes, ¿y qué tienes en tu lista de «objetos recientes»? Bueno, X, Y, Z. Inútil. Pero tienes búsqueda de texto completo. Buscas el nombre de A, que en realidad comparten cientos de otros objetos, y es posible que haya muchas más ocurrencias que en A, incluso si nadie los ha estado usando desde hace bastante tiempo, por lo que llenan los resultados por encima de tu A. Inútil. No hay una forma fácil de volver a A: algo aquí no está funcionando.

Este es un problema de usabilidad; para hacer que tu aplicación sea más útil, de alguna manera debes mantener el seguimiento de lo que se usa con mayor frecuencia por los usuarios. ¿Cómo hacer eso? Una respuesta completa no es trivial: como a menudo sucede en los problemas de usabilidad, lo que parece simple desde el punto de vista del usuario, en realidad es complejo de resolver y renderizar. Al final, toda la complejidad debe estar oculta, pero la solución no es trivial.

Área de interés enfocado
Área de interés enfocado en el tiempo.

Lo que es relevante para ti no es solo lo que visitaste ocasionalmente, sino, por ejemplo, proyectos o documentos a los que has vuelto una y otra vez recientemente: necesitas mantener en foco una ventana de atención. Míralo de esta manera: quieres los proyectos o documentos a los que estás enlazando con frecuencia. Necesitas una especie de página de clasificación personal.

Registro de visitas

Bueno, el camino a seguir es registrar lo que estás haciendo; tienes que registrarlo de alguna manera como una tabla paralela, probablemente desnormalizada, de «visitas», manteniéndola muy simple, ya que probablemente obtendrás rápidamente muchas registros allí.

Una clase de recopilador de visitas de ejemplo en Java/Hibernate
Una clase de recopilador de visitas de ejemplo en Java/Hibernate

En la imagen ves un ejemplo de «visita», cuando un usuario mira y/o trabaja en algo. Ten en cuenta que, como recopilarás muchos datos, necesitarás filtrar en función también de tu modelo de seguridad: por eso tenemos el campo «areaId» allí.

Sin embargo, sin importar cómo decidas recopilar las visitas, tendrás que enfrentar el problema de cómo ponderarlas, es decir, tener definida una función de clasificación de visitas sobre usuarios, objetos y tiempo.

En nuestra implementación, creamos una función que para cada usuario de Teamwork y cada entidad (ya sea tarea, problema, entrada de diario, documento, acción de worklog) calcula la clasificación de visitas del usuario para la entidad; si la entidad es relevante para el usuario, la clasificación de visitas será alta. La clasificación se vuelve alta al «visitar» es decir, visitar una entidad.

Como dijimos antes, se asume que el interés se desvanece con el tiempo, de lo contrario terminarías teniendo demasiadas entidades con alta clasificación: por lo tanto, tienes que definir una especie de ventana de atención, con una degradación de la relevancia.

gaussian GaussianParameters

Necesitas una forma de calcular la degradación de la relevancia; definimos la degradación con el lado derecho de una curva gaussiana con las constantes en el código.

La clasificación de visitas se puede refinar en la noción de clasificación de grupo, si tu aplicación tiene una noción de grupo de trabajo, de modo que puedas definir la actividad del grupo. Otro beneficio de la clasificación de visitas es que puedes monitorear eficientemente el uso de tu aplicación, o «actividad», y podría llevar a la introducción de insignias et cetera.

Implementación de ejemplo

Una implementación de ejemplo está en Teamwork: como incluye gestión de proyectos, procesos de negocio y groupware, hay muchos objetos alrededor. La clasificación de visitas ha demostrado ser útil de varias maneras para mejorar la usabilidad, sin empobrecer el modelo.

«Lo que más visitaste» es un portlet que puedes tener en tus paneles de control, y también ves los resultados de búsqueda clasificados:

Tus entidades con mayor clasificación.
Tus entidades con mayor clasificación.

Configuración del portlet de clasificación.
Configuración del portlet de clasificación.

Resultados de búsqueda clasificados.
Resultados de búsqueda clasificados.

De esta manera, siempre debes tener «a mano» en lo que realmente estás trabajando: debes poder acceder a tus objetos más relevantes con un clic.

Referencias

El artículo de Page Rank de Google: The Anatomy of a Large-Scale Hypertextual Web Search Engine

Una discusión sobre insignias: http://stackoverflow.com/questions/135647/how-do-badges-work-in-stackoverflow

Una introducción a la búsqueda de texto completo: http://www.javaworld.com/javaworld/jw-09-2006/jw-0925-lucene.html

Búsqueda de texto completo en Hibernate: http://www.hibernate.org/410.html

Nuestra contribución a la búsqueda de texto completo en Hibernate: http://www.hibernate.org/432.html

Mira la clasificación de visitas en acción en la demo o instalando la aplicación web.

Mira un infográfico interesante aquí Anatomía de un motor de búsqueda de First Site Guide

Related Posts

Autor: Twproject staff

Twproject is built by a small, solid and very efficient company. Its developers are ready to give support on the solution. Follow us for news, tips and updates.