A great resource for true database independent full text search.
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.
about this book
Part 1 Understanding Search Technology
1. State of the art
1.1. What is search?
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
2. Getting started with Hibernate Search
2.1. Requirements: what Hibernate Search needs
2.2. Setting up Hibernate Search
2.3. Mapping the domain model
2.4. Indexing your data
2.5. Querying your data
2.6. Luke: inside look into Lucene indexes
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
4. Mapping more advanced data structures
4.1. Mapping the unexpected: custom bridges
4.2. Mapping relationships between entities
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
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
7. Writing a Lucene query
7.1. Understanding Lucene’s query syntax
7.2. Tokenization and fields
7.3. Building custom queries programmatically
8. Filters: cross-cutting restrictions
8.1. Defining and using a filter
8.2. Examples of filter usage and their implementation
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
10. Scalability: using Hibernate Search in a cluster
10.1. Exploring clustering approaches
10.2. Configuring slave nodes
10.3. Configuring the master node
11. Accessing Lucene natively
11.1. Getting to the bottom of Hibernate Search
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
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
13. Don’t reinvent the wheel
13.1. Playing in the Sandbox
13.2. Making use of third-party contributions
13.3. Processing XML
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.
It has completely changed the way I do complex search. Awesome!
Love its vast coverage--the definitive source.
Covers it all...the only source I need.
A superb discussion of a complex topic.