We just published Hibernate Search 6.0.0.Beta7.
This release mainly improves sorts and aggregations on multi-valued or nested fields, introduces dynamic index fields through field templates, restores the index metamodel, and restores low-level Lucene settings. It also includes an upgrade to Hibernate ORM 5.4.15.Final.
Getting started with Hibernate Search 6
If you want to dive right into the new, shiny Hibernate Search 6, a good starting point is the getting started guide included in the reference documentation.
Hibernate Search 6 APIs differ significantly from Hibernate Search 5. For more information about migration and what we intend to do to help you, see the migration guide. |
What’s new
Better sorts and aggregations on multi-valued/nested fields
As of Hibernate Search 6.0.0.Beta7, aggregations in the Lucene backend now work correctly on multi-valued fields (HSEARCH-1927, HSEARCH-1929) and on fields in nested documents (HSEARCH-3892).
What’s more, both sorts and aggregations now support filtering when the field being sorted/aggregated on is located in a nested document (HSEARCH-3846, HSEARCH-3881). This is particularly useful to sort on a field that is usually multi-valued, but becomes single-valued after you apply the criteria of your query. Think of a search on t-shirts, sorting by price, where each t-shirt has multiple sizes with its own price; when searching for a specific t-shirt size, you’ll want to sort on the price of each t-shirt for that size only. See the reference documentation for details and examples: here for sorts and here for aggregations.
Many thanks to Waldemar Kłaczyński for providing the groundwork that made this possible.
Dynamic index fields through field templates
As of HSEARCH-3273, it is now possible to add fields to documents even if they weren’t declared beforehand, provided you declared matching field templates.
This means you can implement a bridge that will index a schema-less JSON object, for example,
provided the properties of JSON objects are named following specific conventions that you can set yourself
(such as *_int
for integers, *_txt
for text, etc.).
You can declare field templates by defining custom bridges; see this section of the reference documentation for more information.
Index metamodel
As of HSEARCH-3589, Hibernate Search exposes a metamodel for its indexes, effectively allowing to look up fields of a specific index and their characteristics. See this section of the reference documentation for more information.
Low-level configuration for the Lucene backends
As of HSEARCH-3776,
several low-level configuration options relating to the Lucene IndexWriter
have been restored.
See here for index writer settings
and here for merge settings.
As of HSEARCH-3777,
the Similarity
used when indexing and searching in the Lucene backend
can be
configured through the LuceneAnalysisConfigurer
.
Version upgrades
-
HSEARCH-3907: Upgrade to Hibernate ORM 5.4.15.Final
Hibernate Search 6 requires ORM 5.4.4.Final or later to work correctly. Earlier 5.4.x versions will not work correctly. |
Backward-incompatible changes
-
HSEARCH-3898:
SearchQuery.explain(String, String)
now expects to be passed the name of a mapped type, instead of the name of an index.
Documentation
-
HSEARCH-3887: The documentation no longer incorrectly states that routing keys don’t trigger filtering.
-
HSEARCH-3879: Configuration options related to thread pools and indexing are now explained more clearly.
Other improvements and bug fixes
-
HSEARCH-3886: Documents with missing values are now sorted last by default in sorts by field value, instead of being inserted next to "zero" values.
-
HSEARCH-3896: Calling
.fetch
on the sameSearchQuery
multiple times now works correctly. -
HSEARCH-3897 and HSEARCH-3898:
explain()
now works correctly for indexes with a custom name; when the query targets multiple types, you should pass the JPA type name instead of the index name. -
HSEARCH-3901: The context passed to
PropertyMappingAnnotationProcessor
/TypeMappingAnnotationProcessor
now exposes anannotatedElement()
method to inspect the annotated element (type, name and annotations). -
HSEARCH-3911:
LuceneSearchResult
now exposes agetTopDocs()
method. -
HSEARCH-3914:
LuceneSearchQuery
now exposes agetLuceneSort()
method.
And more. For a full list of changes since the previous releases, please see the release notes.
How to get this release
All details are available and up to date on the dedicated page on hibernate.org.
Feedback, issues, ideas?
To get in touch, use the following channels:
-
hibernate-search tag on Stackoverflow (usage questions)
-
User forum (usage questions, general feedback)
-
Issue tracker (bug reports, feature requests)
-
Mailing list (development-related discussions)