Provide a "compatibility layer" module to help users migrate from Search 5 to Search 6

Description

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: => Cancelled. People will have to define analyzers with Search 6 APIs before they can use the migration helper.

      • @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.

Environment

None

Assignee

Yoann Rodière

Reporter

Yoann Rodière

Labels

None

Suitable for new contributors

None

Feedback Requested

None

Components

Fix versions

Priority

Blocker
Configure