How rubyazz/search-engine- works
Seroost is a local folder search engine: serve <folder> loads or builds a persisted index while serving a browser UI and search/statistics API. The main indexing stages are file discovery and change detection, format-specific text extraction, tokenization/stemming, and index updates; queries are tokenized and ranked against that index. Source excerpts support these core links, but omit some main.rs details, so uncertain dispatch and extraction wiring is not expanded.
Main entry points: model.rs Search model · server.rs HTTP server · main.rs CLI and indexer · english_stemmer.rs English stemmer
Components 16
Runtime and indexing
- CLI and indexer
src/main.rs - File extraction
src/main.rs - Persisted index
Search index
- Search model
src/model.rs - Tokenizer
src/lexer.rs - Term and document index
src/model.rs
HTTP and browser
- HTTP server
src/server.rs - Search UI
src/index.js - UI document
src/index.html
English stemming
- English stemmer
src/snowball/algorithms/english_stemmer.rs - Stem environment
src/snowball/snowball_env.rs - Stem match tables
src/snowball/among.rs - Snowball exports
src/snowball/mod.rs
Other components
- Folder user
- Browser user
- HTTP client
Connections 19
- Folder user → CLI and indexer: starts serve
- CLI and indexer → Persisted index: loads or saves
- CLI and indexer → File extraction: extracts files
- CLI and indexer → Search model: updates index
- File extraction → Search model: supplies text
- Search model → Tokenizer: tokenizes text
- Tokenizer → Snowball exports: uses stemming
- Snowball exports → English stemmer: exports algorithm
- English stemmer → Stem environment: edits word
- English stemmer → Stem match tables: matches rules
- Search model → Term and document index: stores terms
- CLI and indexer → HTTP server: starts server
- Browser user → HTTP server: requests page or API
- HTTP server → UI document: serves page
- HTTP server → Search UI: serves script
- Search UI → HTTP client: posts query
- HTTP client → HTTP server: calls search API
- HTTP server → Search model: searches or reads stats
- Search model → Tokenizer: tokenizes query