Skip to content

Create FTS test datasets generator - #534

Draft
m-szymon wants to merge 2 commits into
scylladb:masterfrom
m-szymon:fts_dataset
Draft

Create FTS test datasets generator#534
m-szymon wants to merge 2 commits into
scylladb:masterfrom
m-szymon:fts_dataset

Conversation

@m-szymon

Copy link
Copy Markdown
Collaborator

m-szymon added 2 commits July 20, 2026 11:55
Add a Latte-based performance testing suite for ScyllaDB Full-Text
Search (BM25), covering the full lifecycle from data loading through
index build to search with IR accuracy metrics.

Workload (fts.rn):
- Schema phase: idempotent keyspace/table creation with optional
  index drop/creation
- Load phase: bulk document ingestion from TSV files, with shard
  support for large datasets
- Build index phase: drops and recreates the FTS index, then probes
  with BM25 queries until serving; reports index_ready_seconds and
  indexing_throughput_docs_per_sec
- Search phase: runs queries with configurable concurrency and
  computes recall@k, precision@k, MRR, and nDCG@k against qrels

Metrics (metrics.rn):
- recall@k, precision@k, reciprocal rank, nDCG@k using graded
  relevance and precomputed log2 discount factors

Orchestrator (run_benchmark.py):
- Drives all phases via latte CLI calls with external wall-clock
  timing for indexing throughput
- Parses latte JSON reports for latency histograms and custom metrics
- All phases individually skippable (--skip-schema, --skip-load,
  --skip-build-index, --skip-search)
- Automatic cleanup (index drop) after search; --no-cleanup to skip
- Sharded dataset loading for large corpora

Includes testdata/ smoke-test fixture (10 docs, 8 queries, qrels)
and README with phase-by-phase usage instructions.
Add standalone FTS dataset preparation tooling

Introduce prepare_dataset.py to build benchmark datasets from BEIR,
custom TSV input, or previously prepared datasets. Support replicate
and synthetic scaling, synthetic query generation, sharding, and
manifest/statistics output.

Also document the dataset format and preparation workflow in the
full-text-search docs, and update the benchmark README to point to the
new preparation guide.
Since we are in read-only plan mode, the next step is to inspect the affected file and surrounding context so I can turn those findings into a concrete fix plan with minimal-risk changes.
@swasik

swasik commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

@swasik please take a look

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants