Research Literature Management System with Custom Metadata Support
Prerequisites
PyQt5 must be present in the environment:
pip install PyQt5
Path Configuration
Update the directory constants to reflect your storage layout:
# System directories
WORKING_DIR = './data/'
CACHE_LOCATION = './data/cache/'
SETTINGS_FILE = "./data/settings.conf"
SEARCH_INDEX = "./data/file_index.db"
# Database separation
DYNAMIC_STORAGE = './data/runtime/' # Active paper database
METADATA_STORAGE = './data/biblio/' # Academic metadata (conference, year, tags)
SCAN_PATHS = [b'./documents/'] # PDF repository locations
Database Setup
Initialize the SQLite3 backend for bibliographic data:
sqlite3 ./data/biblio/academic.db
Create the metadata schema:
CREATE TABLE publications (
doc_id TEXT PRIMARY KEY,
tier TEXT,
venue TEXT,
pub_year TEXT,
keywords TEXT,
commentary TEXT
);
Terminate the session:
.quit
Deployment Options
Launch the application directly:
python angrysearch.py
Or perform system installation:
sudo ./install.sh
Configuration Note: When settings.conf exists, set index_mode=full to enable metadata functionality.
Core Capabilities
The interface displays document attributes—filename, priority tier, conference venue, publication year, keyword tags, analytical commentary, file size, and last modified timestamp—alongside a collapsible taxonomy sidebar.
Instant Search Utilizes the underlying ANGRYsearch index for real-time content retrieval across the document collection.
Metadata Enrichment Attach hierarchical rankings, conference identifiers, temporal markers, categorical tags, and research observations to individual entries through the property editor.
Faceted Navigation
Filter collections by selecting categories in the sidebar (e.g., machine learning) or employ query syntax: machine learning@keywords. Extended operators support venue filtering (@venue), year constraints (@year), and custom taxonomies.
Adaptive Layout Toggle sidebar visibility to maximize reading area during detailed document review.