[[preface]]

[preface]
== Preface

Full text search engines like Apache Lucene are very powerful technologies to add efficient free
text search capabilities to applications. However, Lucene suffers several mismatches when dealing
with object domain models. Amongst other things indexes have to be kept up to date and mismatches
between index structure and domain model as well as query mismatches have to be avoided.

Hibernate Search addresses these shortcomings - it indexes your domain model with the help of a few
annotations, takes care of database/index synchronization and brings back regular managed objects
from free text queries. To achieve this Hibernate Search is combining the power of
link:$$http://www.hibernate.org$$[Hibernate] and link:$$http://lucene.apache.org$$[Apache Lucene].

Since version `5.6` Hibernate Search sports an experimental integration with link:$$https://www.elastic.co/products/elasticsearch$$[Elasticsearch].
Elasticsearch is built on Apache Lucene so we can now expose very similar features, making most
of this reference documentation a valid guide to both approaches.
For details specific to Elasticsearch, jump to <<elasticsearch-integration>>.
The other sections of this guide will assume you're using Lucene without the Elasticsearch indirection.

