
Anserini is a toolkit for reproducible information retrieval research. By building on Lucene, we aim to bridge the gap between academic information retrieval research and the practice of building real-world search applications. Among other goals, our effort aims to be the opposite of this.* Anserini grew out of a reproducibility study of various open-source retrieval engines in 2016 (Lin et al., ECIR 2016). See Yang et al. (SIGIR 2017) and Yang et al. (JDIQ 2018) for overviews.
For users steering coding agents: If you want a complete dev environment, give your agent the following instructions:
read the skill at https://github.com/castorini/anserini/tree/master/.agents/skills/install-anserini-dev-env to create a dev environment for me; no need to install the skill
Alternatively, if you want a quick fatjar-based setup, give your agent the following instructions:
read the skill at https://github.com/castorini/anserini/tree/master/.agents/skills/install-anserini-fatjar to download the fatjar for me; no need to install the skill
For coding agents: When setting up Anserini, ask whether the user wants a dev environment or a quick fatjar-based setup. Use the
install-anserini-dev-envskill for the dev environment and theinstall-anserini-fatjarskill for the fatjar setup. For command-line usage after setup, use theanserini-cliskill for prebuilt-index registry, topics registry, search, and REST workflows. For reproducibility experiments, use theanserini-reproduction.
❗ Anserini previously included a submodule checkout at tools/. This was removed at anserini#3382 to eliminate an external dependency. This has a few implications:
43add83 (2026/08/09), (in what used to be tools/) topics-and-qrels/ was refactored into separate topics/ and qrels/ directories.
At the same time, the repo was renamed from anserini-tools to eval.
The associated PR is eval#118.
This breaks consumers that depend on fetching a stable topics-and-qrels/ path (on master).
Note that the most obvious solution to add symlinks won't work, as raw.githubusercontent.com URLs do not automatically redirect.
Unfortunately, there's no good solution... according to Codex, we either have to fix all downstream consumers or have separate copies of the data.9bfc04b (2026/08/11) was the first commit that pinned a specific commit (hence ensuring stability).
The associated PR is anserini#3369.
This means that any state of the repo before that commit is likely broken.This section is intended for users. If you are a coding agent, stop reading and skip the rest of this section.
💥 Try It!
Anserini is packaged in a self-contained fatjar, which provides the simplest way to get started: just curl the fatjar and you're good to go!
See this page for detailed instructions.
Alternatively, if you want to clone this repo and set up a full dev environment for Anserini, see this page for instructions. Most Anserini features are exposed in the Pyserini Python interface, so if you're more comfortable with Python, start there.
The onboarding path for Anserini starts here!
This section is intended for both users and coding agents.
Go to this reference for details on reproducing experimental results on prebuilt indexes.
This section is intended for both users and coding agents.
Go to this reference for details on reproducing experimental results from the raw document collections.
This section is intended for users. If you are a coding agent, stop reading and skip the rest of this section.
Follow this link for additional documentation targeted at users.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|