La última versión de Hibernate Search, un framework de código abierto para la consulta de objetos de domino del grupo de Hibernate, recibió mejoras en los mecanismos de análisis de búsquedas dinámicas y la indexación, y también en el rendimiento en las consultas. El equipo de desarrollo de Hibernate Search anunció el lanzamiento de la versión 3.1 del framework. La nueva versión también incluye características tales como soporte a la expresión vector en la búsqueda y la creación de índices de objetos, acceso para el alcance del analizador en el momento de ejecución de la consulta y el acceso al objeto Results Explanation.

Analyzer Model:

  • El nuevo analizador del modelo puede ser configurado declarativamente para el uso y la creación de funcionalidades tales como la aproximación fonética, la aproximación n-gram, búsqueda de sinónimos, filtrado por "stop words", elision correction y la búsqueda por caracteres no acentuados.
  • Los analizadores pueden ser compuestos como "tokenizadores" y por un conjunto de filtros usando el componente Apache Solr.
  • Analizadores Dinámicos: Estos permiten que una entidad defina cual analizador usar en tiempo de ejecución, lo cual es útil en aplicaciones internacionalizadas donde la localidad de una entidad es diferente de otra.

Indexing:

Las mejoras en tiempo de indexación son:

  • Mejor control sobre la indexación manual y la escritura del índice (el consumo de RAM, non-compound file format flag, etc.)
  • Soporte para el término verctor y personalización de la similitud.
  • Mejor soporte para la replicación de índices grandes.
  • Mejora el tiempo de bloqueo y contención durante la creación/actualización de los índices, así como la reducción del número de apertura/cierre de los mismos.
  • Los índices se crean ahora en paralelo para cada directorio.

Consulta:

Se han añadido nuevas características para mejorar el tiempo de consulta como las siguientes:

  • Fue expuesto el analizador de alcance de las entidades para facilitar la reutilización y mejorar el tiempo de consulta.
  • Filtrado de resultados (DocIdSet) puede ser puesto en caché declarativamente.
  • Explanation está expuesto para mejorar la depuración y la información.
  • Reducción del número de roundtrips a la base de datos en consultas con múltiples entidades.
  • Las consultas Lucene son más rápidas en índice que contienenn un solo tipo de entidad y se redujo el consumo de E/S en Lucene por leer sólo los campos necesarios en un documento (cuando es posible).
  • Mejor rendimiento en las propiedades proyectadas (la mejora no se percibe si se compara con llamadas directas a Lucene).
  • Reducción de la lectura de documentos (durante la paginación y las llamadas de getResultSize()).
  • Reapertura de índices más rápidas (manteniendo segmentos no alterados abiertos) y mejor lectura del índice en concurrencia (uso de control de sólo lectura).

Emmanuel Bernard blogueo sobre el nuevo lanzamiento y sus características de las cuales incluye el uso de SLF4J como el framework de logging y la migración a la versión 2.4 de Lucene, versión 3.3 de Hibernate Core y JDK 5.0. Hibernate Search, trabaja de manera no clusterizada y cluterizada y proporciona actualizaciones sincrónicas y asincrónicas de los índices, dando la posibilidad de elegir entre tiempo de respuesta,  throughpu (rendimiento) y actualización. También trabaja con todos los patrones tradicionales de Hibernate, en especial el gran (y atómico) patrón conversacional utilizado por JBoss Seam.

La última versión se puede descargar en el sitio de la misma y los logs de los cambios están disponibles en JIRA. Migrar a esta versión se recomienda para todos los usuarios (véase la ficha para la Migración). La hoja de ruta, muestra las nuevas funcionalidades que el equipo de Hibernar Search está planificandon para futuras versiones de este framework.

De Hibernate Search 3.1 traz grandes melhorias Dynamic Search Analyser e Query Time Perfomance

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw