1.1. Dealing with information explosion
1.3. Lucene and the components of a search application
1.3.1. Components for indexing
1.3.2. Components for searching
1.4. Lucene in action: a sample application
1.5. Understanding the core indexing classes
1.6. Understanding the core searching classes
Chapter 2. Building a search index
2.1. How Lucene models content
2.2. Understanding the indexing process
2.3.1. Adding documents to an index
2.4.1. Field options for indexing
2.4.2. Field options for storing fields
2.4.3. Field options for term vectors
2.4.4. Reader, TokenStream, and byte[] field values
2.4.5. Field option combinations
2.5. Boosting documents and fields
2.6. Indexing numbers, dates, and times
2.10. Other directory implementations
2.11. Concurrency, thread safety, and locking issues
2.11.1. Thread and multi-JVM safety
2.13. Advanced indexing concepts
2.13.1. Deleting documents with IndexReader
2.13.2. Reclaiming disk space used by deleted documents
2.13.3. Buffering and flushing
Chapter 3. Adding search to your application
3.1. Implementing a simple search feature
3.3. Understanding Lucene scoring
3.4.1. Searching by term: TermQuery
3.4.2. Searching within a term range: TermRangeQuery
3.4.3. Searching within a numeric range: NumericRangeQuery
3.4.4. Searching on a string: PrefixQuery
3.4.5. Combining queries: BooleanQuery
3.4.6. Searching by phrase: PhraseQuery
3.4.7. Searching by wildcard: WildcardQuery
3.5. Parsing query expressions: QueryParser
3.5.4. Numeric and date range searches
3.5.5. Prefix and wildcard queries
Chapter 4. Lucene’s analysis process
4.1.3. Parsing vs. analysis: when an analyzer isn’t appropriate
4.2. What’s inside an analyzer?
4.3. Using the built-in analyzers
4.5. Synonyms, aliases, and words that mean the same
4.7.1. Analysis of multivalued fields
4.8.2. Analyzing non-English languages
4.8.3. Character normalization
Chapter 5. Advanced search techniques
5.2.1. Sorting search results by field value
5.2.6. Sorting by multiple fields
5.4. Querying on multiple fields at once
5.5.1. Building block of spanning, SpanTermQuery
5.5.2. Finding spans at the beginning of a field
5.6.4. Filtering by specific terms
5.6.5. Using QueryWrapperFilter
5.6.8. Using BooleanQuery for filtering
5.6.10. Caching filter results
5.7. Custom scoring using function queries
5.7.2. Boosting recently modified documents using function queries
5.8. Searching across multiple Lucene indexes
6.1. Using a custom sort method
6.1.1. Indexing documents for geographic sorting
6.2. Developing a custom Collector
6.2.1. The Collector base class
6.3.1. Customizing QueryParser’s behavior
6.3.2. Prohibiting fuzzy and wildcard queries
6.4.1. Implementing a custom filter
6.5.1. Producing payloads during analysis
Chapter 7. Extracting text with Tika
7.2. Tika’s logical design and API
7.4. Tika’s built-in text extraction tool
7.5. Extracting text programmatically
Chapter 8. Essential Lucene extensions
8.1. Luke, the Lucene Index Toolbox
8.1.1. Overview: seeing the big picture
8.2. Analyzers, tokenizers, and TokenFilters
8.5.1. Generating a suggestions list
8.5.2. Selecting the best suggestion
8.6. Fun and interesting Query extensions
Chapter 9. Further Lucene extensions
9.2. Storing an index in Berkeley DB
9.4. Fast memory-based indices
9.5. XML QueryParser: Beyond “one box” search interfaces
Chapter 10. Using Lucene from other programming languages
10.3. Lucene.Net (C# and other .NET languages)
10.4. KinoSearch and Lucy (Perl)
Chapter 11. Lucene administration and performance tuning
11.1.1. Simple performance-tuning steps
11.1.3. Tuning for index-to-search delay
11.3. Managing resource consumption
11.4. Hot backups of the index
Chapter 12. Case study 1: Krugle
Chapter 13. Case study 2: SIREn
13.2.1. Searching across all fields
13.3. Indexing entities with SIREn
13.4. Searching entities with SIREn
13.4.2. Restricting search within a cell
Chapter 14. Case study 3: LinkedIn
14.1. Faceted search with Bobo Browse
14.2. Real-time search with Zoie
14.2.2. Real-time vs. near-real-time
14.2.3. Documents and indexing requests
A.2. Running the command-line demo
Appendix B. Lucene index format
B.2.1. Understanding the multifile index structure
Appendix C. Lucene/contrib benchmark
C.2. Parts of an algorithm file
D.9. Doug Cutting’s publications