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: * * {{@Indexed}} ** {{@Field}} ** {{@IndexedEmbedded}} ** Search 5 analyzer behavior, *especially the parts that won't be implemented in Search 6*: *** {{@AnalyzerDef}} annotations? *** 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 {{ QueryBuilder }} ** The most commonly used methods of FullTextQuery * Maybe also some optional APIs: ** {{ Coordinates }} ** {{@Spatial}}
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. |
|