A high-performance in-memory search engine using realistic search data inspired by daily software engineering tasks. The API provides both advanced autocomplete and fuzzy search endpoints, returning detailed metadata.
- Autocomplete Search: Fast prefix-based search using a Trie data structure.
- Fuzzy Search: Typo-tolerant search using Levenshtein distance.
- Detailed Metadata: Execution time, algorithm used, and more.
Check out the live demo: In-Memory Search Engine
-
Clone the repository:
git clone https://github.com/jjacobsonn/in-memory-search-engine.git cd in-memory-search-engine
-
Create and activate a virtual environment:
python3 -m venv env source env/bin/activate
-
Install dependencies:
pip install -r requirements.txt
Run the application locally using Uvicorn:
uvicorn api.app:app --host 0.0.0.0 --port 8000
Access the API at http://127.0.0.1:8000
.
-
Build the Docker image:
docker build -t in-memory-search-engine .
-
Run the Docker container:
docker run -p 8000:8000 in-memory-search-engine
-
Start the services:
docker-compose up --build
-
Stop the services:
docker-compose down
Run the tests using pytest
:
pytest --maxfail=1 --disable-warnings -v
For more details on test execution and coverage, refer to the Testing Guide.
Refer to the Deployment Guide for detailed deployment instructions.
We welcome contributions! Please see our Contributing Guide for more details.
- Curl Usage Guide
- Advanced Features
- System Overview
- Running the Application
- Staging Deployment
- Swagger Usage
- Testing Documentation
This project is licensed under the MIT License. See the LICENSE file for details.
- GitHub Actions: View all workflows
- Releases: View all releases