| Conference | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|---|---|
| EACL | - | - | 2021 | - | 2023 | 2024 | - | 2026 |
| EMNLP | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | - |
| NAACL | 2019 | - | 2021 | 2022 | - | 2024 | 2025 | - |
| COLING | - | 2020 | - | 2022 | - | - | 2025 | - |
| IJCAI | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 ~ |
- The
-symbol indicates that no file exists for that year. - The
~symbol indicates that the file exists but contains only basic metadata (title + authors), without complete BibTeX/DOI yet. - Each line in the txt file is the title of a paper, auto-generated from the corresponding jsonl file.
PAPERS/TEST/UPDATE-SMOKE/2099.*contains a synthetic record used to validate installed data update flows.
The search CLI tool queries paper metadata from a SQLite database, built from JSONL files under the PAPERS/ directory.
PAPERS/<level>/<conference>/<year>.txt ← paper titles (generated from jsonl, one per line)
PAPERS/<level>/<conference>/<year>.jsonl ← structured metadata (author, bib, url — primary source)
JSONL record format:
{"title": "Paper Title", "author": "", "bib": "", "url": ""}PAPERS/<level>/<conf>/<year>.jsonl
│ search build-db
▼
papers.db (SQLite)
│ search query ...
▼
stdout (tab-separated)
Install Rust/Cargo from https://rustup.rs/, then run the install script. The script compiles a release binary, installs the binary and PAPERS/ data, builds the database, writes a database version, and runs a smoke test.
Windows / PowerShell:
powershell -ExecutionPolicy Bypass -File .\install.ps1Installs to %LOCALAPPDATA%\topaperlist by default. Skip PATH modification:
.\install.ps1 -NoPathCustom command name:
.\install.ps1 -CommandName topaper-searchLinux / macOS:
sh ./install.shInstalls to $HOME/.local/share/topaperlist by default. Creates a wrapper script at $HOME/.local/bin/search. The install script automatically runs build-db, writes the database version, and injects PAPERS_DIR / PAPERS_DB_PATH into your shell RC files (.bashrc, .zshrc, .profile) with idempotent sentinel markers. Re-running the script upgrades the install in place.
Custom locations:
INSTALL_ROOT=/opt/topaperlist BIN_DIR=/usr/local/bin sh ./install.sh
COMMAND_NAME=topaper-search sh ./install.shAfter install:
search query --conference AAAI --year 2024 diffusionThe database version is the Git commit SHA of the data branch used to build papers.db. Regular search query, search bib, and search version commands do not contact the network. Run search update when you want to check the remote data version against main from:
https://github.com/dududuguo/topaperlist.git
search update checks the remote data version with git ls-remote. If the installed data is current, it prints an already-up-to-date message. If a newer version is available, it fetches the managed local repo, replaces installed PAPERS/, rebuilds papers.db, and writes the new version to both SQLite metadata and db.version.
Check the installed database version:
search versionRun the update check manually:
search updateFrom the source tree:
sh scripts/check-update.sh --yesWindows:
.\scripts\check-update.ps1 -YesOverride the update source:
TOPAPERLIST_REPO_URL=https://github.com/yourname/topaperlist.git TOPAPERLIST_UPDATE_BRANCH=main sh ./install.sh| Variable | Default | Description |
|---|---|---|
PAPERS_DIR |
<exe>/PAPERS |
Path to PAPERS data directory |
PAPERS_DB_PATH |
<exe>/papers.db |
Path to SQLite database file |
TOPAPERLIST_REPO_URL |
https://github.com/dududuguo/topaperlist.git |
Git repository used for data update checks |
TOPAPERLIST_UPDATE_BRANCH |
main |
Git branch used for data update checks |
RUST_LOG |
(off) | Set to debug for debug logging |
The Rust project is in the search/ subdirectory. Building requires the cargo-post helper (cargo install cargo-post), which auto-copies the binary to the repo root after a successful build.
cd search
cargo post build --release
cargo testSet environment variables for local testing (optional; the tool auto-resolves paths relative to the binary):
export PAPERS_DIR=/path/to/PAPERS
export PAPERS_DB_PATH=/path/to/papers.db
RUST_LOG=debug cargo run -- query --conference ICML diffusionEach matching record is printed as a tab-separated line:
level conference year title
Default column order: level → conference → year → title.
Use a complete title to fetch all metadata for a paper. For example:
search query --title "Self-Training With Noisy Student Improves ImageNet Classification."+------------+--------------------------------------------------------------------+
| Field | Value |
+------------+--------------------------------------------------------------------+
| level | A |
| conference | CVPR |
| year | 2020 |
| title | Self-Training With Noisy Student Improves ImageNet Classification. |
| author | Qizhe Xie; Minh-Thang Luong; Eduard H. Hovy; Quoc V. Le |
| url | https://doi.org/10.1109/CVPR42600.2020.01070 |
+------------+--------------------------------------------------------------------+
@inproceedings{DBLP:conf/cvpr/XieLHL20,
author = {Qizhe Xie and Minh-Thang Luong and Eduard H. Hovy and Quoc V. Le},
title = {Self-Training With Noisy Student Improves ImageNet Classification.},
booktitle = {CVPR 2020: Virtual Event / Seattle, WA, USA},
pages = {10684--10695},
year = {2020},
url = {https://doi.org/10.1109/CVPR42600.2020.01070},
doi = {10.1109/CVPR42600.2020.01070},
biburl = {https://dblp.org/rec/conf/cvpr/XieLHL20.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
- At least one filter is required.
- All filters are case-insensitive.
--keywordand positional arguments are equivalent.- Duplicate values are automatically deduplicated.
- Comma-separated values work for repeatable flags except
--title, which preserves commas as part of the title. level,conference,yearuse exact matching (case-insensitive).--titleuses exact title matching (case-insensitive, ignoring BibTeX case-protection braces such as{C}and trailing.!?punctuation).search query --title ...prints metadata as a terminal table, abbreviates author lists longer than 80 characters with.etc, then appends the raw BibTeX entry after a blank line; column selection and unknown flags are ignored for exact title lookup.- Title keywords use substring matching (the title string must contain the keyword).
- Exclude filters are applied after include filters.
- Multiple title keywords use AND logic (the title must contain ALL keywords).
All options are repeatable. Most accept comma-separated values; --title preserves commas as part of the title.
| Filter | Include flag | Exclude flag |
|---|---|---|
| Exact title | --title |
- |
| Title keyword | -k, --keyword, positional |
-x, --exclude, --exclude-keyword |
| Level | -l, --level |
--exclude-level |
| Conference | -n, --conference |
--exclude-conference |
| Year | -y, --year |
--exclude-year |
Use -s or --sort <field>:<direction> (repeatable):
search query diffusion --sort conference:asc --sort year:descSupported fields: level, conference (aliases: conf, name), year, title (alias: paper).
Supported directions: asc, desc.
Two mutually exclusive modes:
Include mode (-c, --columns) — select specific columns:
search query --columns conference,year,title,bib diffusionCanonical columns appear first in fixed order (level → conference → year → title), followed by non-canonical columns (bib, author, url, etc.) in the order specified.
Exclude mode (-X, --exclude-columns) — show all columns except the listed ones:
search query --conference AAAI --exclude-columns urlDefault (no --columns or --exclude-columns): the four canonical fields. For search query --title ..., metadata is printed as a terminal table and the BibTeX entry is appended below it.
Use search bib to print BibTeX entries using the same filters:
search bib --keyword vla
search bib --title "Paper Title"
search bib --conference ICML --year 2024The bib subcommand defaults to showing only the bib column. You can customize columns with --columns / --exclude-columns:
search bib --keyword vla --columns title,bib
search query --title "Paper Title"Reusable SQL templates live in search/sql/:
| Template | Pattern |
|---|---|
filter_set.sql |
Set membership (IN / NOT IN) — level, conference, year |
filter_substring.sql |
Substring match (LIKE / NOT LIKE) — title |
projection.sql |
Final column projection + ORDER BY |
Filters are composed via nested subqueries. See search/sql/query.sql for a worked pipeline example.
search build-db
search query diffusion graph
search query --keyword diffusion --keyword graph
search query --level A --conference AAAI --year 2024
search query --level A,B --conference AAAI,ICML --year 2024,2025 diffusion
search query --exclude-level B --exclude-year 2024
search query --conference NeurIPS --exclude survey --exclude-year 2023 --sort year:desc
search query --conference ICML,NeurIPS --exclude-year 2025 --columns conference,year,title diffusion
search query --conference AAAI --exclude-columns url --sort year:desc
search bib --keyword vla