- Written in Zig instead of C++
- Supports updates and deletes
- HTTP API that can be used for managing multiple indexes
- Fast and concurrent write operations using WAL and in-memory segments
- Simplified internal file format, using msgpack for serialization wherever possible
Building from source code:
zig build
Running tests:
zig build test --summary all
Running server:
zig build run -- --dir /tmp/fpindex --port 8080 --log-level debug
Returns HTTP status 200 if the index exists.
HEAD /:indexname
Returns information about an index.
GET /:indexname
Creates a new index.
PUT /:indexname
Deletes an index.
DELETE /:indexname
Performs multiple operations on an index.
POST /:indexname/_update
{
"changes": [
{"insert": {"id": 1, "hashes": [100, 200, 300]}},
{"delete": {"id": 2}}
]
}
Searches for a fingerprint in the index.
POST /:indexname/_search
{"query": [100, 200, 300], "timeout": 10}
Returns HTTP status 200 if the fingerprint exists.
HEAD /:indexname/:fpid
Gets information about a fingeprint.
There is no way to get back the original hashes, they are not stored in a way that makes it possible to retrieve them.
GET /:indexname/:fpid
Updates a single fingerprint.
Prefer using /_update
for bulk operations.
PUT /:indexname/:fpid
{"hashes": [100, 200, 300]}
Deletes a single fingerprint.
Prefer using /_update
for bulk operations.
DELETE /:indexname/:fpid
GET /_health
GET /:indexname/_health
GET /_metrics