Verbex 0.1.3
dotnet add package Verbex --version 0.1.3
NuGet\Install-Package Verbex -Version 0.1.3
<PackageReference Include="Verbex" Version="0.1.3" />
<PackageVersion Include="Verbex" Version="0.1.3" />
<PackageReference Include="Verbex" />
paket add Verbex --version 0.1.3
#r "nuget: Verbex, 0.1.3"
#:package Verbex@0.1.3
#addin nuget:?package=Verbex&version=0.1.3
#tool nuget:?package=Verbex&version=0.1.3
<div align="center"> <img src="https://raw.githubusercontent.com/jchristn/verbex/main/assets/logo.png" alt="Verbex Logo" width="128" height="128">
Verbex
A high-performance inverted index library for .NET 8.0 with SQLite storage and full-text search.
Verbex is in ALPHA - we welcome your feedback, improvements, and bugfixes </div>
Screenshots
<div align="center"> <img src="https://raw.githubusercontent.com/jchristn/verbex/main/assets/screenshot1.png" alt="Screenshot 1" width="800"> </div>
<div align="center"> <img src="https://raw.githubusercontent.com/jchristn/verbex/main/assets/screenshot2.png" alt="Screenshot 2" width="800"> </div>
<div align="center"> <img src="https://raw.githubusercontent.com/jchristn/verbex/main/assets/screenshot3.png" alt="Screenshot 3" width="800"> </div>
Quick Start
Docker (Recommended)
Get up and running in seconds with Docker:
# Clone and start
git clone https://github.com/jchristn/verbex.git
cd verbex/docker
docker compose up -d
# Server available at http://localhost:8080
# Dashboard available at http://localhost:8200
For detailed Docker configuration, see DOCKER.md.
From Source
git clone https://github.com/jchristn/verbex.git
cd verbex
dotnet build
dotnet run --project src/Verbex.Server # Start REST API
dotnet run --project src/TestConsole # Interactive shell
Library Usage
using Verbex;
// Create index
var config = new VerbexConfiguration { StorageMode = StorageMode.InMemory };
using var index = new InvertedIndex(config);
// Add documents
await index.AddDocumentAsync(Guid.NewGuid(), "The quick brown fox", "doc1.txt");
await index.AddDocumentAsync(Guid.NewGuid(), "Machine learning algorithms", "doc2.txt");
// Search
var results = await index.SearchAsync("fox machine");
foreach (var result in results)
Console.WriteLine($"{result.DocumentId}: {result.Score:F4}");
Key Features
- Flexible Storage: In-memory SQLite or persistent on-disk SQLite
- TF-IDF Scoring: Relevance-ranked search results
- Text Processing: Lemmatization, stop word removal, token filtering
- Metadata Filtering: Labels and tags for document organization
- Thread-Safe: Optimized for concurrent read-heavy workloads
- REST API: Production-ready HTTP server with authentication
- CLI Tool: Professional command-line interface (
vbx) - Web Dashboard: React-based management UI
Components
| Component | Description |
|---|---|
| Verbex | Core library (NuGet package) |
| Verbex.Server | REST API server |
| VerbexCli | Command-line interface |
| TestConsole | Interactive testing shell |
| Dashboard | React web interface |
Storage Modes
// In-Memory (fast, non-persistent)
var config = VerbexConfiguration.CreateInMemory();
// On-Disk (persistent)
var config = VerbexConfiguration.CreateOnDisk(@"C:\VerbexData");
Text Processing
var config = new VerbexConfiguration
{
StorageMode = StorageMode.OnDisk,
StorageDirectory = @"C:\Data\Index",
MinTokenLength = 3,
MaxTokenLength = 20,
Lemmatizer = new BasicLemmatizer(),
StopWordRemover = new BasicStopWordRemover()
};
CLI Example
vbx index create docs --storage disk --lemmatizer --stopwords
vbx doc add readme --content "Getting started with Verbex"
vbx search "getting started" --limit 10
REST API Example
# Authenticate
curl -X POST http://localhost:8080/v1.0/auth/login \
-H "Content-Type: application/json" \
-d '{"Username": "admin", "Password": "password"}'
# Search
curl -X POST http://localhost:8080/v1.0/indices/myindex/search \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"Query": "machine learning"}'
Documentation
- DOCKER.md - Docker deployment guide
- REST_API.md - REST API reference
- VBX_CLI.md - CLI documentation
- STORAGE.md - Storage architecture
- SCORING.md - Scoring algorithm details
Configuration
| Property | Default | Description |
|---|---|---|
StorageMode |
InMemory |
InMemory or OnDisk |
StorageDirectory |
null |
SQLite database location |
DefaultMaxSearchResults |
100 |
Search result limit |
MinTokenLength |
0 |
Minimum token length (0=disabled) |
MaxTokenLength |
0 |
Maximum token length (0=disabled) |
Lemmatizer |
null |
Word lemmatization processor |
StopWordRemover |
null |
Stop word filter |
Support
Contributing
git clone https://github.com/jchristn/verbex.git
cd verbex
dotnet build
dotnet run --project src/Test # Run test suite
License
MIT License - free for commercial and personal use.
Attribution
Logo icon by Freepik from Flaticon
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Data.Sqlite (>= 10.0.1)
- PrettyId (>= 2.0.0)
-
net8.0
- Microsoft.Data.Sqlite (>= 10.0.1)
- PrettyId (>= 2.0.0)
-
net9.0
- Microsoft.Data.Sqlite (>= 10.0.1)
- PrettyId (>= 2.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Verbex is in ALPHA.