Hibernate.orgCommunity Documentation

Hibernate Search

Apache Lucene™ Integration

Reference Guide


Preface
1. Getting started
1.1. System Requirements
1.2. Migration notes
1.3. Required libraries
1.3.1. Using Maven
1.3.2. Manual library management
1.4. Deploying on WildFly
1.5. Configuration
1.6. Indexing
1.7. Searching
1.8. Analyzer
1.9. What’s next
2. Architecture
2.1. Overview
2.2. Back end
2.2.1. Lucene
2.2.2. JMS
2.2.3. JGroups
2.3. Reader strategy
2.3.1. shared
2.3.2. not-shared
2.3.3. Custom
2.4. Multi-tenancy
2.4.1. What is multi-tenancy?
2.4.2. Limitations
3. Configuration
3.1. Enabling Hibernate Search and automatic indexing
3.1.1. Enabling Hibernate Search
3.1.2. Automatic indexing
3.2. Configuring the IndexManager
3.2.1. directory-based
3.2.2. near-real-time
3.2.3. Custom
3.3. Directory configuration
3.3.1. Infinispan Directory configuration
3.4. Worker configuration
3.4.1. JMS Master/Slave back end
3.4.2. JGroups Master/Slave back end
3.5. Reader strategy configuration
3.6. Exception handling
3.7. Lucene configuration
3.7.1. Tuning indexing performance
3.7.2. LockFactory configuration
3.7.3. Index format compatibility
3.8. Metadata API
3.9. Hibernate Search as a WildFly module
3.9.1. Use the Hibernate Search version included in WildFly
3.9.2. Update and activate latest Hibernate Search version in WildFly
3.9.3. Using Infinispan with Hibernate Search on WildFly
4. Mapping entities to the index structure
4.1. Mapping an entity
4.1.1. Basic mapping
4.1.2. Mapping properties multiple times
4.1.3. Embedded and associated objects
4.1.4. Associated objects: building a dependency graph with @ContainedIn
4.2. Boosting
4.2.1. Static index time boosting
4.2.2. Dynamic index time boosting
4.3. Analysis
4.3.1. Default analyzer and analyzer by class
4.3.2. Named analyzers
4.3.3. Dynamic analyzer selection
4.3.4. Retrieving an analyzer
4.4. Bridges
4.4.1. Built-in bridges
4.4.2. Tika bridge
4.4.3. Custom bridges
4.4.4. BridgeProvider: associate a bridge to a given return type
4.5. Conditional indexing
4.6. Providing your own id
4.6.1. The ProvidedId annotation
4.7. Programmatic API
4.7.1. Mapping an entity as indexable
4.7.2. Adding DocumentId to indexed entity
4.7.3. Defining analyzers
4.7.4. Defining full text filter definitions
4.7.5. Defining fields for indexing
4.7.6. Programmatically defining embedded entities
4.7.7. Contained In definition
4.7.8. Date/Calendar Bridge
4.7.9. Declaring bridges
4.7.10. Mapping class bridge
4.7.11. Mapping dynamic boost
5. Querying
5.1. Building queries
5.1.1. Building a Lucene query using the Lucene API
5.1.2. Building a Lucene query with the Hibernate Search query DSL
5.1.3. Building a Hibernate Search query
5.2. Retrieving the results
5.2.1. Performance considerations
5.2.2. Result size
5.2.3. ResultTransformer
5.2.4. Understanding results
5.3. Filters
5.3.1. Using filters in a sharded environment
5.4. Faceting
5.4.1. Creating a faceting request
5.4.2. Setting the facet sort order
5.4.3. Applying a faceting request
5.4.4. Interpreting a Facet result
5.4.5. Restricting query results
5.5. Optimizing the query process
5.5.1. Caching index values: FieldCache
6. Manual index changes
6.1. Adding instances to the index
6.2. Deleting instances from the index
6.3. Rebuilding the whole index
6.3.1. Using flushToIndexes()
6.3.2. Using a MassIndexer
6.3.3. Useful parameters for batch indexing
7. Index Optimization
7.1. Automatic optimization
7.2. Manual optimization
7.3. Adjusting optimization
8. Monitoring
8.1. JMX
8.1.1. StatisticsInfoMBean
8.1.2. IndexControlMBean
8.1.3. IndexingProgressMonitorMBean
9. Spatial
9.1. Enable indexing of Spatial Coordinates
9.1.1. Indexing coordinates for range queries
9.1.2. Indexing coordinates in a grid with spatial hashes
9.1.3. Implementing the Coordinates interface
9.2. Performing Spatial Queries
9.2.1. Returning distance to query point in the search results
9.3. Multiple Coordinate pairs
9.4. Insight: implementation details of spatial hashes indexing
9.4.1. At indexing level
9.4.2. At search level
10. Advanced features
10.1. Accessing the SearchFactory
10.2. Using an IndexReader
10.3. Accessing a Lucene Directory
10.4. Sharding indexes
10.4.1. Static sharding
10.4.2. Dynamic sharding
10.5. Sharing indexes
10.6. Using external services
10.6.1. Using a Service
10.6.2. Implementing a Service
10.7. Customizing Lucene’s scoring formula
11. Further reading