This module should provide in particular:
The most commonly used annotations from Search 5, as well as integration code to detect and apply these annotations to the ORM mapping. In particular:
Search 5 analyzer behavior, especially the parts that won't be implemented in Search 6: => Cancelled. People will have to define analyzers with Search 6 APIs before they can use the migration helper.
Support for "default" analyzers: globally (configuration property), per entity (@Analyzer on a type, inherited), per property (@Analyzer on a getter or class field). These defaults should not apply to fields defined using Search 6 APIs.
An implementation of the main runtime APIs:
The Search class to retrieve the FullTextEM/FullTextSession
The most commonly used methods of FullTextEM/FullTextSession (createFullTextQuery() and index() in particular)
The most commonly used methods of FullTextQuery
Maybe also some optional APIs:
Parts of the APIs may be dropped if they are not very often used and/or close to impossible to support in Search 6.
The compatibility layer is only expected to work when mapping ORM entities to Lucene indexes. Elasticsearch integration and JMS/JGroups backends, in particular, are out of scope.
We might have to rename or relocate some Search 6 classes to avoid conflicts with the classes in the compatibility layer.
Note that, in order to implement the QueryBuilder in the compatibility layer, we have two solutions:
Just copy/pasting the old DSL code from Search 5 and re-implement everything it needs on top of Search 6. In particular, implement the old metamodel. Might be time-consuming.
OR Reimplement the old DSL by redirecting calls the new DSL. Might change behavior slightly.
We might want to create subtasks to implement this bits by bits.