https://github.com/cs80-team/goolean
A simple boolean information retrieval system with its own shell written in golang.
https://github.com/cs80-team/goolean
go golang information-retrieval shell
Last synced: 14 days ago
JSON representation
A simple boolean information retrieval system with its own shell written in golang.
- Host: GitHub
- URL: https://github.com/cs80-team/goolean
- Owner: CS80-Team
- License: mit
- Created: 2025-02-27T23:11:01.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-09T15:44:09.000Z (about 1 year ago)
- Last Synced: 2025-04-12T06:53:38.888Z (about 1 year ago)
- Topics: go, golang, information-retrieval, shell
- Language: Go
- Homepage:
- Size: 23.4 MB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Goolean
## Overview
Goolean is a boolean model search engine that allows users to perform boolean queries on a dataset of documents (corpus). The system consists of an engine that processes and indexes documents and a shell that interact with the engine through a set of commands.
## Features
- **Command-line Shell**: Provides an interface to interact with the engine.
- **Boolean Query Support**: Supports AND, OR, and NOT operations.
- **Document Indexing**: Efficiently indexes documents for fast retrieval.
- **Query Optimization**: Optimizes queries for better performance. (under construction)
- **File Management**: Allows adding new files and listing indexed documents.
## System Components
1. **Shell**: Accepts user commands and communicates with the engine.
3. **Engine**: Processes queries and retrieves relevant documents.
- **Loader**: Loads documents into the system.
- **Normalizer**: Prepares text by cleaning and standardizing it.
- **Indexer**: Indexes documents for searching.
- **Query Constructor**: Parses and builds the query.
- **Query Optimizer**: Improves query execution efficiency. (Under construction)
## Commands
- `query`: Query the engine for a keyword or a boolean expression
- Usage: `query | `
- `list`: List all documents, displayable by name or/and path or/and ID or/and extension
Use -sortby to sort results by name, path, id or extension
Use -n to limit the number of results
Default fields order: `-id` `-name` `-path` `-ext`
Default sortby: `id`
Default limit: `all`
- Usage: `list <-id | -name | -path | -ext> [-n ] [-sortby ]`
- `load`: Load a new document into the engine
- Usage: `load `
- `find`: Find a document by name or id.
Display the document's id, name and path
Default search field: -name
- Usage: `find <-id | -name> || find `
- `exit`: Exit the shell
- Usage: `exit`
- `help`: List all available commands
- Usage: `help`
- `clear`: Clear the screen
- Usage: `clear`
- `open`: Open a document by ID in the default editor
- Usage: `open `
### Early Executed Commands (invoked after each command executed)
- `engine-stats`: Displays the total number of documents and keys in the engine.
- Usage: `Reserved for the shell`
## Installation
1. Clone the repository:
```sh
git clone https://github.com/CS80-Team/Goolean/
cd Goolean
```
2. Build the project:
```sh
make build
cd bin/
./goolean
```
## System Overview

## Usage Example
[](./docs/demo.mp4)
## License

## Contributors
- [Omar Muhammad](https://github.com/OmarMGaber)
- [Ahmed Ashraf](https://github.com/ahmed-ashraff)