How cs80-team/goolean works
Goolean is a boolean-model document search engine exposed through an interactive shell or gRPC services. Its main workflow loads or uploads documents, tokenizes and processes their text, builds an inverted index, and evaluates AND/OR/NOT queries to return matching documents. The README also describes listing, finding, and opening indexed files. The graph combines documented capabilities with visible calls; loader and some processing internals are represented at their source paths, but unsampled implementation details and connections are not inferred.
Main entry points: engine.go Search engine · main.go Application startup · file.go File service · query.go Query service
Components 22
Entry points
- Application startup
main.go
Document ingestion
- Document loader
internal/engine/loader.go - Document indexer
internal/engine/indexer.go - Tokenizer
internal/engine/tokenizer/tokenizer.go - Text processing
internal/textprocessing/textprocessing.go
Search engine
- Search engine
internal/engine/engine.go - Boolean query evaluation
internal/engine/query.go - Inverted index
internal/engine/index_manager.go - Index structures factory
internal/structures/factory/structures_factory.go - Skip-list factory
internal/structures/factory/skip_pointer_list_factory.go - Ordered index structures
internal/structures/ordered - Indexed documents
internal/document.go
User interfaces
- Shell commands
engine_commands.go - Query service
internal/service/query.go - File service
internal/service/file.go - Uploaded files
- Query gRPC API
internal/transport/query - File gRPC API
internal/transport/file - Document mapper
internal/service/dto/document_mapper.go
Other components
- Shell user
- gRPC client
- Local filesystem
Connections 30
- Shell user → Application startup: starts shell
README.md - Application startup → Search engine: configures
main.go - Application startup → Shell commands: starts shell
main.go - Application startup → Query service: creates
main.go - Application startup → File service: creates
main.go - gRPC client → Query gRPC API: sends queries
README.md - gRPC client → File gRPC API: manages files
README.md - Query gRPC API → Query service: routes requests
internal/service/query.go - File gRPC API → File service: routes requests
internal/service/file.go - Shell commands → Search engine: queries
engine_commands.go - Shell commands → Search engine: loads documents
engine_commands.go - Query service → Search engine: evaluates query
internal/service/query.go - Query service → Document mapper: maps results
internal/service/query.go - Document mapper → Query gRPC API: creates response documents
internal/service/dto/document_mapper.go - File service → Search engine: indexes upload
internal/service/file.go - File service → Local filesystem: writes and reads
internal/service/file.go - Search engine → Indexed documents: keeps documents
internal/engine/engine.go - Search engine → Document indexer: indexes text
- Search engine → Document loader: loads corpus
- Search engine → Tokenizer: configures tokenization
internal/engine/engine.go - Search engine → Text processing: configures processing
internal/engine/engine.go - Document indexer → Tokenizer: tokenizes documents
internal/engine/indexer.go - Search engine → Boolean query evaluation: evaluates queries
internal/engine/query.go - Boolean query evaluation → Inverted index: reads postings
internal/engine/query.go - Search engine → Inverted index: manages postings
internal/engine/index_manager.go - Inverted index → Index structures factory: creates structures
internal/engine/index_manager.go - Skip-list factory → Ordered index structures: creates skip lists
internal/structures/factory/skip_pointer_list_factory.go - Index structures factory → Ordered index structures: builds index structures
internal/structures/factory/structures_factory.go - Application startup → Skip-list factory: selects implementation
main.go - File service → Uploaded files: receives uploads
internal/service/file.go