Skip to content

schsiung/hibernate-search

 
 

Repository files navigation

Hibernate Search

Maven Central Build Status Coverage Status Quality gate Language Grade: Java

Description

Hibernate Search automatically extracts data from Hibernate ORM entities to push it to local Apache Lucene indexes or remote Elasticsearch indexes.

It features:

For example, map your entities like this:

@Entity // This entity is mapped to an index @Indexed public class Book { // The entity ID is the document ID @Id @GeneratedValue private Integer id; // This property is mapped to a document field @FullTextField(analyzer = "english") private String title; @ManyToMany // Authors will be embedded in Book documents @IndexedEmbedded private Set<Author> authors = new HashSet<>(); // Getters and setters // ... } @Entity public class Author { @Id @GeneratedValue private Integer id; // This property is mapped to a document field @FullTextField(analyzer = "name") private String name; @ManyToMany(mappedBy = "authors") private Set<Book> books = new HashSet<>(); public Author() { } // Getters and setters // ... }

Index existing data like this:

SearchSession searchSession = Search.session( entityManager ); MassIndexer indexer = searchSession.massIndexer( Book.class ); indexer.startAndWait();

Automatic indexing does not require any change to code based on JPA or Hibernate ORM:

Author author = new Author(); author.setName( "Isaac Asimov" ); Book book = new Book(); book.setTitle( "The Caves Of Steel" ); book.getAuthors().add( author ); author.getBooks().add( book ); entityManager.persist( author ); entityManager.persist( book );

And search like this:

SearchResult<Book> result = Search.session( entityManager ) .search( Book.class ) .where( f -> f.match() .fields( "title", "authors.name" ) .matching( "Isaac" ) ) .fetch( 20 ); long totalHitCount = result.getTotalHitCount(); List<Book> hits = result.getHits();

License

This software and its documentation are distributed under the terms of the FSF Lesser GNU Public License (see lgpl.txt).

Getting started

A getting started guide is available in the reference documentation.

Fore more information, refer to the Hibernate Search website:

For offline use, distribution bundles downloaded from SourceForge also include the reference documentation for the downloaded version in PDF and HTML format.

Contact

Latest Documentation

See http://hibernate.org/search/documentation/.

Bug Reports

See the HSEARCH project on the Hibernate JIRA instance: https://hibernate.atlassian.net/browse/HSEARCH.

Community Support

See http://hibernate.org/community/.

Contributing

New contributors are always welcome.

See CONTRIBUTING.md to get started.

The contribution guide also includes build instructions.

About

Hibernate Search: full-text search for domain model

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%