| The idea would be to allow to create Projection<T> objects from a SearchTarget, and use these objects when creating a query: .asProjections( projectionObject1, projectionObject2, ...). This would allow three things:
- Implementation parameterized projections, where naming the projection is not enough, and we need to pass paramters to it. See for example the spatial distance projections, where we need to pass a latitude and longitude:
HSEARCH-3190 Open
- Enabling of disabling bridges in projections; see
- Type-safe projections, i.e. passing typed references to the asProjections() methods, and get a SearchQuery<Pair<T, U>>, or SearchQuery<Triplet<T, U, V>>, and so on depending on the number of parameters. This would obviously only be possible for a small number of parameters (say, up to 5), because we would have to declare and implement one asProjections() method for each possible number of parameters. Note that, in order to allow that, we should at the very least make asProjections set the query type to SearchQuery<? extends List<?>> instead of the current SearchQuery<List<?>>.
See also HSEARCH-2265 Open |