We're updating the issue view to help you get more done. 

Search 6 groundwork - Restore support for bypassing bridges in the predicate/sort DSL

Description

Follow-up on HSEARCH-3221.

Essentially allow to do this in the predicate DSL:

1 .predicate().match().onRawField( "myField" ).orRawField( "myOtherField", "yetAnotherField" ).matching(<value>)

and this in the sort DSL:

1 .sort().byRawField( "fieldName" ).asc().onMissingValue().use( <value> )

... so that <value> is interpreted as the un-converted (raw) value of the field, and is not passed through the user-defined converter, but through a "pass-through" converter.

This should allow us to introduce a consistent syntax for the projection DSL, to project on a field without converting it:

1 .projection().rawField( "fieldName", String.class )

On the backend side, this means we will have to inform the backend, when fetching a builder, that:

  1. Compatibility checks should ignore any custom converter

  2. Methods such as org.hibernate.search.engine.search.predicate.spi.MatchPredicateBuilder#value, org.hibernate.search.engine.search.predicate.spi.RangePredicateBuilder#lowerLimit or org.hibernate.search.engine.search.dsl.sort.FieldSortMissingValueContext#use should ignore any custom converter and use a PassThroughToDocumentFieldValueConverter instead.

How to do that remains to be seen...

Environment

None

Status

Assignee

Fabio Massimo Ercoli

Reporter

Yoann Rodière

Labels

None

Suitable for new contributors

None

Feedback Requested

None

Components

Fix versions

Priority

Major