Post on 11-Jul-2015
Julián Klas jklas@fi.uba.ar
Recuperación de Información sobre Modelos de Dominio
Facultad de Ingeniería,Universidad de Buenos Aires
Recuperación de Información
¿Qué es? “el área de las Ciencias de la Computación que trata la representación,
almacenamiento, organización y acceso a ítems de información” [Baeza99]
¿Cómo Funciona?el usuario ingresa su necesidad de información en lenguaje natural, el
sistema entrega una lista priorizada de resultados relevantes
¿Cuáles son las principales variantes?Publico vs. Privado
Usuario Final vs. DesarrolloTexto vs. Objetos
2
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
Ejemplos de IR
3
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
Para Usuarios Finales, Público
Marketplace SearchWeb Search
Ejemplos de IR
Para Usuarios Finales, Privado
Julián Klas jklas@fi.uba.ar 4
Introducción y Antecedentes
Personal Enteprise
Ejemplos de IR
5
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
Para Desarrolladores, sobre Texto
Ejemplos de IR
6
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
Para Desarrolladores, sobre Objetos
Domain Model Search
Propuesta
7
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
Para Desarrolladores, sobre Objetos
Resumen
¿De qué trata este trabajo?
• Es un análisis de requerimientos y alternativas para construir un
framework que resuelva problemas de recuperación de la
información sobre modelos de dominio
• La principal contribución de este artículo es el análisis de alternativas
para crear un framework reusable y extensible que permita crear un
motor de búsqueda para aplicaciones nuevas o existentes, a las
que se pude integrar como otros frameworks de presentación, acceso
a datos o remotización.8
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
Contexto
Domain Model“un modelo de objetos de un dominio que incorpora tanto comportamiento
como datos” [Fowler02]
Object Relational Mapping“aislan las clases del dominio del esquema de la base de datos” [Fowler02]
Arquitecturas Enterprise
9
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
● transversales● 3 tier● RDBMS transaccionales● distribuidos ó clusterizados
● middlewares y contenedores● concurrencia● alto costo de desarrollo y
mantenimiento
Análisis del Problema
Actividades de un Search Engine sobre Objetos
– Ranking y Relevancia
– Indexación
– Seguridad
– Técnicas de Matching
– User Feedback y Métricas
– Recuperación de Objetos y Caché
– Visualización
10
Análisis del Problema
Julián Klas jklas@fi.uba.ar
Ranking y Relevancia
– Ranking Estructural• Ranking Estático: clases• Ranking Dinámico: objetos• Algoritmos tipo HITS, PageRank• Dependiente del negocio punto de extensión
– Ranking por Correlación con Query
– Técnicas de Matching• Stop Words, Stemming, Tesauros (sinonimia, corrección, Domain
WordNet)• Queremos Intercambiabilidad de Algoritmos
Análisis del Problema
Julián Klas jklas@fi.uba.ar 11
Indexación
Indexación + Integración implica:
• Niveles de Independencia del Domain Model
• Proceso de indexación
• Reindexación
• Almacenamiento del Índice
12
Análisis del Problema
Julián Klas jklas@fi.uba.ar
Indexación Independencia del Modelo de Dominio
• Modelo de Dominio Dependiente
public class Customer extends SearchObject {
public boolean isIndexable() {...}
public SearchResult findObjects(String userQuery)throws IndexSearchException {...}
public void indexObject() throws IndexingException {...}}
13
Análisis del Problema
Julián Klas jklas@fi.uba.ar
Indexación Independencia del Modelo de Dominio
• Modelo de Dominio Semi Independiente
@Indexablepublic class Customer {
@IndexField(stemming=StemType.FULL_STEM, transform="customer-site transform")
private Site site;
@IndexField(stemming=StemType.FULL_STEM,lang="SPANISH")private String firstName;
@IndexFieldprivate String lastName;private String email;private String password;
}
14
Análisis del Problema
Julián Klas jklas@fi.uba.ar
Indexación Independencia del Modelo de Dominio
• Modelo de Dominio Independiente
<domain-model-search>
<indexable class=“Customer”>
<indexField name=“site” stemming=“FULL_STEM” transform=“cust-site”/>
<indexField name=“firstName” stemming=“FULL_STEM” lang=“SPANISH”/>
<indexField name=“lastName”/>
</indexable>
</domain-model-search>
15
Análisis del Problema
Julián Klas jklas@fi.uba.ar
Indexación: proceso de indexación
• Indexación Online
16
Análisis del Problema
Julián Klas jklas@fi.uba.ar
Indexación: proceso de indexación
• Indexación Semi Online
Análisis del Problema
Julián Klas jklas@fi.uba.ar 17
Indexación: proceso de indexación
• Indexación Offline
Análisis del Problema
Julián Klas jklas@fi.uba.ar 18
Indexación: Reindexación
– Causada por:
• Pérdida accidental de datos
• Errores / Bugs
– Registro de Objetos Indexados
• Para reconstruir el índice
• Almacenado en DBMS ó Archivos
– Indexación
• Online / Semi-Online: requieren proceso ad hoc– No hay contexto de la transacción de negocio
• Offline: muy similar a la indexación original
Análisis del Problema
Julián Klas jklas@fi.uba.ar 19
Indexación: Almacenamiento del Índice
Análisis del Problema
Julián Klas jklas@fi.uba.ar
Base de Datos Archivos Índice Mapeado
+ APIs Existentes + Performance+ Hereda las ventajas de los mapeadores
+ Almacenamiento físico implementado y optimizado
+ Disponibilidad- Hereda desventajas, en particular la performance
+ Resuelve concurrencia mediante propiedades ACID
+ Sin APIs externas, disponible desde cualquier lenguaje
- Dificil de optimizar,cambiar almacenamiento, etc.
- Overhead de propiedades ACID
- Solución de bajo nivel costo en desarrollo/ pruebas
- Mantenimiento y tunning por personas especializadas
- Puede derivar en soluciones suboptimas, peor que un RDBMS
- Puede ser costoso- Concurrencia en manos del desarrollador
20
Seguridad
– Indexación de Datos SensiblesEj: información financiera
– Visualización de Datos Sensibles• Roles y Permisos
– Seguridad en Índices• Aspecto de Infraestructura• Transversal a la empresa – fuera de alcance
Análisis del Problema
Julián Klas jklas@fi.uba.ar 21
Recuperación de Objetos y CachéAnálisis del Problema
Julián Klas jklas@fi.uba.ar 22
● Búsqueda● Caché de Listados● Caché del Índice Invertido● Nivel de concurrencia posiblemente no acotado
● Indexación● Para ranking estructural● Se puede usar el del ORM● Nivel de concurrencia posiblemente acotado
● Ambientes clusterizados: cachés remotos
● Conclusión: arquitectura abierta a estas variantes
VisualizaciónAnálisis del Problema
Julián Klas jklas@fi.uba.ar 23
• Objetivo: interfaz clara para transformar listado lógico en representación concreta
• Implementaciones estándar para interoperar (XML) y visualizar (HTML)
• Las vistas estándar tienen en cuenta aspectos de seguridad
• Implementaciones avanzadas: por cuenta del usuario
VisualizaciónAnálisis del Problema
Julián Klas jklas@fi.uba.ar 24
• Metadatos
<search-visualization><view type=“html” default=“yes”>
<resultClass name=“Person” translator=“com.mydomain.HtmlPersonTranslator”/><resultClass default=“yes” translator=“com.framework.ToStringTranslator”/>
</view><view type=“xml”>
<resultClass name=“Person” translator=“com.mydomain.XmlPersonTranslator”/><resultClass default=“yes” translator=“com.framework.ReflectionTranslator”/>
</view></search-visualization>
Framework
• Framework vs. Librería– Un framework es extensible, una librería es adaptable– Framework caja negra vs. Blanca– Podemos usar técnicas como Inyección de Dependencias e Inversión de Control
• Inyección de Dependencias– Tipos de Indexación: online, semi-online, offline– Interceptor según ORM– DAO– Rankers
• Inversión del Control:– Durante transacciones de negocio: el framework se llama cuando es necesario– Durante indexación, búsqueda y visualización: el framework llama al usuario
cuando es necesario
25
Análisis del Problema
Julián Klas jklas@fi.uba.ar
ConclusionesConclusiones y Trabajos Futuros
Julián Klas jklas@fi.uba.ar 26
• Clasificamos los sistemas de IR, entendiendo qué resuelve cada uno
• Explicamos y demarcamos el problema de IR sobre objetos
• Analizamos actividades y requerimientos para el framework
• Profundizamos en alternativas de las actividades más importantes
• Próximos pasos:● Resultados sobre distintos Domain Models● Evaluar adecuación de los distintos modelos de IR● Verificar extensibilidad por el usuario (ej: scoring, visualización)
Recuperación de Informaciónsobre Modelos de Dominio
Preguntas
Julián Klas jklas@fi.uba.ar 27
¿Preguntas?
Anexo I
Apache Lucene: search engine open source más difundido
¿Por qué no usar Lucene para hacer IR sobre objetos?• Según Compass, si bien Lucene da buenos resultados y es rápido:
• Dificil de integrar• APIs de bajo nivel• No transaccional• Otros: no soporta búsquedas sobre todos los campos del documento, no indexa en
RDBMS, updates dificiles de implementar (generan duplicados)
• Según Hibernate Search:• Structural Mismatch: traslado de objetos a índices• Duplication Mismatch: sincronización objetosíndice• API Mismatch: recuperar objetos como en el ORM
28
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar
Anexo II
SÓLO SIRVE PARA DOMAIN MODELS?Sirve para otros, la idea es poder indexar el modelo de objetos y aprovechar su
estructura
QUÉ TIENE DE NUEVO RESPECTO DE HIBERNATE SEARCH, COMPASS, ETC?
Haría falta un experto en hibernate search y compass para saber si cubren todos estos puntos
Entendemos que lucene no está pensado para objetos, no habría que haber empezado por ahí (es un hack)
No usamos lucene ni tenemos dependencias con un ORM (caso hibernate).
Este trabajo es el análisis de qué hace falta, las variantes y consecuencias, no se basa en qué hicieron estas dos herramientas, la comparativa vendrá en la tesis
29
Introducción y Antecedentes
Julián Klas jklas@fi.uba.ar