Hibernate Search in Action
Emmanuel Bernard and John Griffin
  • December 2008
  • ISBN 9781933988641
  • 488 pages
  • printed in black & white

A great resource for true database independent full text search.

Aaron Walker, base2Services

Hibernate Search in Action is a practical, example-oriented guide for Java developers with some background in Hibernate Core. As the first book to cover Hibernate Search, it guides you through every step to set up full text search functionality in your Java applications. The book also introduces core search techniques and reviews the relevant parts of Lucene, in particular the query capabilities.

Hibernate Search in Action also provides a pragmatic, how-to exploration of more advanced topics such as Search clustering. For anyone using Hibernate or JBoss Seam, this book is the definitive guide on how to add or enhance search features in their applications.

Table of Contents show full



about this book

Part 1 Understanding Search Technology

1. State of the art

1.2. Pitfalls of search engines in relational databases

1.3. Full-text search: a promising solution

1.4. Mismatches between the round object world and the flat text world

1.5. Summary

2. Getting started with Hibernate Search

2.1. Requirements: what Hibernate Search needs

2.3. Mapping the domain model

2.4. Indexing your data

2.5. Querying your data

2.6. Luke: inside look into Lucene indexes

2.7. Summary

Part 2 Ending structural and synchronization mismatches

3. Mapping simple data structures

3.1. Why do we need mapping, again?

3.2. Mapping entities

3.3. Mapping properties

3.4. Refining the mapping

3.5. Summary

4. Mapping more advanced data structures

4.1. Mapping the unexpected: custom bridges

4.2. Mapping relationships between entities

4.3. Summary

5. Indexing: where, how, what, and when

5.1. DirectoryProvider: storing the index

5.2. Analyzers: doors to flexibility

5.3. Transparent indexing

5.4. Indexing: when transparency is not enough

5.5. Summary

Part 3 Taming the retrieval mismatch

6. Querying with Hibernate Search

6.1. Understanding the query paradigm

6.2. Building a Hibernate Search query

6.3. Executing the full-text query

6.4. Paginating through results and finding the tota

6.5. Projection properties and metadata

6.6. Manipulating the result structure

6.7. Sorting results

6.8. Overriding fetching strategy

6.9. Understanding query results

6.10. Summary

7. Writing a Lucene query

7.1. Understanding Lucene’s query syntax

7.2. Tokenization and fields

7.3. Building custom queries programmatically

7.4. Summary

8. Filters: cross-cutting restrictions

8.1. Defining and using a filter

8.2. Examples of filter usage and their implementation

8.3. Summary

Part 4 Performance and scalability

9. Performance considerations

9.1. Optimizing indexing

9.2. Optimizing searches

9.3. Optimizing the index structure

9.4. Sharding your indexes

9.5. Testing your Hibernate Search application

9.6. Summary

10. Scalability: using Hibernate Search in a cluster

10.1. Exploring clustering approaches

10.2. Configuring slave nodes

10.3. Configuring the master node

10.4. Summary

11. Accessing Lucene natively

11.2. Obtaining and using a Lucene IndexReader within the framework

11.3. Writing a DirectoryProvider your way

11.4. Projecting your will on indexes

11.5. Summary

Part 5 Native Lucene, scoring, and the wheel

12. Document ranking

12.1. Scoring documents

12.2. Exploring Lucene’s scoring approach and the DefaultSimilarity class

12.3. Scoring things my way

12.4. Document relevance

12.5. Summary

13. Don’t reinvent the wheel

13.1. Playing in the Sandbox

13.2. Making use of third-party contributions

13.3. Processing XML

13.4. Summary

Appendix A: Quick reference


About the Technology

Good search capability is one of the primary demands of a business application. Engines like Lucene provide a great starting point, but with complex applications it can be tricky to implement. It's tough to keep the index up to date, deal with the mismatch between the index structure and the domain model, handle querying conflicts, and so on.

Hibernate Search is an enterprise search tool based on Hibernate Core and Apache Lucene. It provides full text search capabilities for Hibernate-based applications without the infrastructural code required by other search engines. With this free, open-source technology, you can quickly add high-powered search features in an intelligent, maintainable way.

About the author

Emmanuel Bernard: After graduating from Supelec (French "Grande Ecole"), Emmanuel has spent a few years in the retail industry where he started to be involved in the ORM space and in full text technology. He joined the Hibernate team in 2003 and is now a lead developer at JBoss, a division of Red Hat. Emmanuel is the lead developer of Hibernate Annotations and Hibernate EntityManager, two key projects on top of Hibernate core implementing the Java Persistence(tm) specification. He has also lead the Hibernate Search project from its inception, reconsiling the two fields Emmanuel has been involved in: ORM and Full Text search. He is a regular speaker at various conferences and JUGs, including JavaOne, JBoss World and Javapolis (Javoxx). He is also involved in the Java Community Process as a specification lead for JSR 303 (Bean Validation) and as a expert group member for JSR 317 (Java Persistence 2.0).

John Griffin has been in the software and computer industry in one form or another since 1969. He remembers writing his first FORTRAN IV program on his way back from Woodstock. Currently, he is the software engineer/architect for SOS Staffing Services, Inc. He was formerly the lead e-commerce architect for Iomega Corporation, lead SOA architect for Realm Systems and an independent consultant for the Dept of the Interior among many other callings. John has even spent time as an adjunct university professor. He enjoys being a committer to projects because he believes it's time to get involved and give back to the community. John is the author of XML and SQL Server 2000 published by New Riders Press. He is a member of the ACM. Currently, he resides in Layton, Utah with wife, Judy and Australian Shepherds, Clancy and Molly.

combo $49.99 pBook + eBook
eBook $39.99 pdf + ePub + kindle

FREE domestic shipping on three or more pBooks

It has completely changed the way I do complex search. Awesome!

Ayenda Rahien, Author of Building Domain Specific Languages in Boo

Love its vast coverage--the definitive source.

Patrick Dennis, Management Dynamics Incs.

Covers it all...the only source I need.

Robert Hanson, Author of GWT in Action

A superb discussion of a complex topic.

Spencer Stejskal, SOS Staffing Services