29
Julián Klas - [email protected] Recuperación de Información sobre Modelos de Dominio Facultad de Ingeniería, Universidad de Buenos Aires

Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

  • Upload
    jklas

  • View
    990

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Julián Klas ­ [email protected]

Recuperación de Información sobre Modelos de Dominio

Facultad de Ingeniería,Universidad de Buenos Aires

Page 2: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 3: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Ejemplos de IR

3

Introducción y Antecedentes

Julián Klas ­ [email protected]

Para Usuarios Finales, Público

Marketplace SearchWeb Search

Page 4: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Ejemplos de IR

Para Usuarios Finales, Privado

Julián Klas ­ [email protected] 4

Introducción y Antecedentes

Personal Enteprise

Page 5: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Ejemplos de IR

5

Introducción y Antecedentes

Julián Klas ­ [email protected]

Para Desarrolladores, sobre Texto

Page 6: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Ejemplos de IR

6

Introducción y Antecedentes

Julián Klas ­ [email protected]

Para Desarrolladores, sobre Objetos

Page 7: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Domain Model Search

Propuesta

7

Introducción y Antecedentes

Julián Klas ­ [email protected]

Para Desarrolladores, sobre Objetos

Page 8: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 9: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

● transversales● 3 tier● RDBMS transaccionales● distribuidos ó clusterizados

● middlewares y contenedores● concurrencia● alto costo de desarrollo y 

mantenimiento

Page 10: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 11: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected] 11

Page 12: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 13: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 14: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 15: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 16: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Indexación: proceso de indexación

• Indexación Online

16

Análisis del Problema

Julián Klas ­ [email protected]

Page 17: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Indexación: proceso de indexación

• Indexación Semi Online

Análisis del Problema

Julián Klas ­ [email protected] 17

Page 18: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Indexación: proceso de indexación

• Indexación Offline

Análisis del Problema

Julián Klas ­ [email protected] 18

Page 19: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected] 19

Page 20: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Indexación: Almacenamiento del Índice

Análisis del Problema

Julián Klas ­ [email protected]

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

Page 21: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected] 21

Page 22: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Recuperación de Objetos y CachéAnálisis del Problema

Julián Klas ­ [email protected] 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

Page 23: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

VisualizaciónAnálisis del Problema

Julián Klas ­ [email protected] 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

Page 24: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

VisualizaciónAnálisis del Problema

Julián Klas ­ [email protected] 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>

Page 25: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 26: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

ConclusionesConclusiones y Trabajos Futuros

Julián Klas ­ [email protected] 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)

Page 27: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

Recuperación de Informaciónsobre Modelos de Dominio

Preguntas

Julián Klas ­ [email protected] 27

¿Preguntas?

Page 28: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]

Page 29: Recuperación de Información sobre Modelos de Dominio - Presentación JAIIO

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 ­ [email protected]