How apache/lucene works
Apache Lucene is a Java text-search library. A representative workflow accepts query text, parses it into a query representation, searches an index, and collects matching results; Lucene also provides analysis, facets, monitoring, highlighting, spatial search, suggestions, and related modules. The graph reflects documented capabilities and sampled implementation references; several subsystem connections remain unverified because their source was not sampled.
Main entry points: IndexSearcher.java Search execution · Query.java Query model · CustomQueryHandler.java Query monitoring · StandardQueryNodeProcessorPipeline.java Query parsing
Components 20
Querying and Search
- Query parsing
lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java - Query model
lucene/core/src/java/org/apache/lucene/search/Query.java - Search execution
lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java - Result collection
lucene/core/src/java/org/apache/lucene/search/CollectorManager.java - Boolean queries
lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java - Term queries
lucene/core/src/java/org/apache/lucene/search/TermQuery.java
Indexing and Analysis
- Index writing
lucene/core/src/java/org/apache/lucene/index/IndexWriter.java - Index readers
lucene/core/src/java/org/apache/lucene/index/IndexReader.java - Term access
lucene/core/src/java/org/apache/lucene/index/TermsEnum.java - Term bytes
lucene/core/src/java/org/apache/lucene/util/BytesRef.java - Text analysis
lucene/analysis/common/src/java/org/apache/lucene/analysis - Hunspell storage
lucene/analysis/common/src/java/org/apache/lucene/analysis/hunspell/WordStorage.java
Search Extensions
- Faceted search
lucene/facet/src/java/org/apache/lucene/facet/FacetsCollectorManager.java - Query monitoring
lucene/monitor/src/java/org/apache/lucene/monitor/CustomQueryHandler.java - Result highlighting
lucene/highlighter/src/java/org/apache/lucene/search/highlight/QueryScorer.java - Spatial search
lucene/spatial-extras/src/java/org/apache/lucene/spatial/composite/CompositeVerifyQuery.java - Search suggestions
lucene/suggest/src/java/org/apache/lucene/search/suggest/document/ContextQuery.java - Result grouping
lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupHeadsCollectorManager.java - Query tree
lucene/monitor/src/java/org/apache/lucene/monitor/QueryTree.java
Other components
- Library user
Connections 18
- Library user → Query parsing: provides text
- Query parsing → Query model: builds query
lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java - Search execution → Query model: rewrites and weighs
lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java - Search execution → Index readers: uses reader
lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java - Search execution → Result collection: reduces results
lucene/core/src/java/org/apache/lucene/search/CollectorManager.java - Query model → Boolean queries: specialized by
lucene/core/src/java/org/apache/lucene/search/Query.java - Query model → Term queries: specialized by
lucene/core/src/java/org/apache/lucene/search/Query.java - Faceted search → Search execution: uses for collection
lucene/facet/src/java/org/apache/lucene/facet/FacetsCollectorManager.java - Query monitoring → Query model: handles queries
lucene/monitor/src/java/org/apache/lucene/monitor/CustomQueryHandler.java - Query monitoring → Query tree: uses tree
lucene/monitor/src/java/org/apache/lucene/monitor/CustomQueryHandler.java - Index writing → Index readers: index lifecycle
- Text analysis → Index writing: prepares indexed text
- Result highlighting → Search execution: uses search results
- Spatial search → Query model: adds query types
- Search suggestions → Search execution: supports suggestions
lucene/suggest/src/java/org/apache/lucene/search/suggest/document/ContextQuery.java - Result grouping → Search execution: collects groups
- Term access → Term bytes: seeks terms
lucene/core/src/java/org/apache/lucene/index/TermsEnum.java - Hunspell storage → Text analysis: supports analysis
lucene/analysis/common/src/java/org/apache/lucene/analysis/hunspell/WordStorage.java