Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

castorini/anserini

Data

A Lucene-based Java toolkit for reproducible information retrieval research and search experimentation.

1,225
757
Java
Apache-2.0
11 years old

What it does

Anserini packages Apache Lucene into a toolkit for reproducible information retrieval research. It targets researchers and practitioners who need a common, scriptable way to index document collections, run retrieval baselines, and compare experimental runs, rather than writing Lucene plumbing from scratch. The project grew out of a 2016 reproducibility study of open-source retrieval engines and has documented designs in SIGIR 2017 and JDIQ 2018 papers overview.

The project is Java-based, sits on Lucene 10.5.0, and is published to Maven Central Lucene dependency Maven artifact. Most functionality is also exposed through the Python interface Pyserini, so Python users can work with the same indexes and retrieval methods Pyserini.

Getting started

The documented quick path is the self-contained fatjar: follow the fatjar installation page, then use the CLI skill or the reproduction guides for search and experiment workflows fatjar installation. If you prefer to work from source and want a full development environment, use the separate dev setup guide dev installation. The project's onboarding entry point is the "start here" page start-here.

The README also provides agent-oriented instructions: coding agents should read the install-anserini-fatjar or install-anserini-dev-env skill before setup, use anserini-cli for prebuilt-index, topic, search, and REST workflows, and use anserini-reproduction for reproduction experiments agent instructions.

Reproducing results

Two documented reproduction paths are available: one works from prebuilt indexes prebuilt-index reproduction, and the other builds from raw document collections collection reproduction. Both are intended for users and coding agents, which makes the toolkit useful when you need to rerun published baselines rather than only perform ad hoc search.

Constraints

This is a research toolkit built around Lucene; expect Java-oriented setup and a Lucene 10.5.0 dependency. The tools/ submodule was removed, and topics and qrels now live in separate topics/ and qrels/ directories in the external evaluation repository. Older commits before the dependency pin may be broken, and downstream consumers relying on the old stable topics-and-qrels/ raw path can no longer count on it migration note. The project is Apache-2.0 licensed license.

HotRepo's take

On 2026-11-05, Anserini recorded 17 new stars in the daily Java-language ranking, placing 18th for that day. That is a useful sign of sustained interest from Java IR users, but it is a single-language daily snapshot, not evidence of broader trending. The toolkit's value is clearest for teams that need documented, rerunnable retrieval baselines, and the recent removal of the tools/ submodule plus the commit pinning are important compatibility details to check before building a workflow around its data paths.

Written by AI from the project's README, updated . The project's own docs are the source of truth.