Hello, It's been some time we have been working on a proof-of-concept for Search 6, and I think it is mature enough to receive some early feedback. So to anyone interested: I would love to read your comments! Note that the APIs are not set in stone yet, everything could still change depending on the feedback.
To help you form an opinion, I added a "showcase" module with a relatively realistic domain model (that of Libraries and their Books), a Hibernate Search mapping and some queries. The showcase uses the Elasticsearch backend, which is (for now) the only one available; Guillaume is working on the Lucene one. The proof-of-concept is available here: https://github.com/hibernate/hibernate-search-6-poc and the showcase is located in the "integrationtest/showcase/library" directory. You can find: - the domain model, mapped using annotations, in org.hibernate.search.v6poc.integrationtest.showcase.library.model - the data access objects implementing CRUD operations in org.hibernate.search.v6poc.integrationtest.showcase.library.dao; there are various implementations of the same DAO contracts (more on this in another email thread). - the custom bridge implementations in org.hibernate.search.v6poc.integrationtest.showcase.library.bridge (more on this in another email thread) A test allowing you to see it all in action is available in src/test/java/org/hibernate/search/v6poc/integrationtest/showcase/OrmElasticsearchLibraryShowcaseIT.java . You can launch it: - from the command line with "mvn clean install -DskipTests; mvn clean verify -pl integrationtest/showcase/library" (an Elasticsearch instance will be spawned automatically) - or more interstingly from your IDE, with breakpoints. You will need an Elasticsearch cluster running and accessible from localhost:9200. I will be starting separate email threads for some topics I would especially like feedback on. If there are some other topics you would like discussed, feel free to answer here or start another thread. As a reminder, and as an explanation of why so many things changed, here are the main goals of Hibernate Search 6: - Overhaul the APIs to remove the dependency to Lucene, so that other technologies can be integrated without hacks (Elasticsearch in particular, but also maybe in the future Solr). - Overhaul the bridge APIs to allow: - Better integration with other technologies (such as Elasticsearch), in particular by abstracting access to indexed documents (HSEARCH-2186 <https://hibernate.atlassian.net/browse/HSEARCH-2186>) - Detection by Hibernate Search of the properties being used, for better dirty checking [not yet implemented, but the APIs should allow that] (HSEARCH-2496 <https://hibernate.atlassian.net/browse/HSEARCH-2496>) - Overhaul the Query API to: - offer a less verbose syntax for simpler queries - return typed results: if you query the Book index, you get a List<Book>, not a raw List (HSEARCH-2225 <https://hibernate.atlassian.net/browse/HSEARCH-2225>) - be generic, yet extensible depending on the integration (e.g. allow to nest Elasticsearch JSON inside a query predicate) (HSEARCH-2498 <https://hibernate.atlassian.net/browse/HSEARCH-2498>) - Generally ensure the architecture: - will allow detection by Hibernate Search of the load graph to use when fetching entities from Hibernate ORM for mass indexing. - will make it easier to implement alternative mappers in the future ( HSEARCH-1800 <https://hibernate.atlassian.net/browse/HSEARCH-1800>, HSEARCH-1401 <https://hibernate.atlassian.net/browse/HSEARCH-1401>). While we were at it, I gave a shot to some additional features I felt could be useful: - User-defined bridge annotations for user-defined bridges (HSEARCH-175 <https://hibernate.atlassian.net/browse/HSEARCH-175>) - Give access to more application context in the bridges (HSEARCH-1839 <https://hibernate.atlassian.net/browse/HSEARCH-1839>) - Comply with the JPA access type when accessing entity properties ( HSEARCH-383 <https://hibernate.atlassian.net/browse/HSEARCH-383>) -- Yoann Rodiere yo...@hibernate.org / yrodi...@redhat.com Software Engineer Hibernate NoORM team _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev