Priority Reorder Addon
Reorder your new Anki cards so the ones you care about come first.
Changelog
See CHANGELOG.md.
Overview
Instead of learning new cards in plain frequency order, you build a priority queue from searches like these:
- common words first, using your frequency field
- words from the VN, book, game or show you're reading now or plan to, using occurrence dictionaries
- cards you added recently
- words whose kanji, or kanji readings, you don't know yet
- specific decks, tags or note types
View Example
View Example Config
```
{
"normal_search": "deck:ๆฅๆฌ่ช::Mining",
"priority_search": [
"deck:ๆฅๆฌ่ช::Mining occurrences:[9-nine-ใใใฎใคใใใฎใใใใฎใใ,9-nine-ใใใใใใใใใใใฎใใจ,9-nine-ใฏใใใใฏใใใใฏใใฎใใ,9-nine-ใใใใใใใฏใชใใใฎใใจ]>=10",
"deck:ๆฅๆฌ่ช::Mining occurrences:[9-nine-ใใใฎใคใใใฎใใใใฎใใ,9-nine-ใใใใใใใใใใใฎใใจ,9-nine-ใฏใใใใฏใใใใฏใใฎใใ,9-nine-ใใใใใใใฏใชใใใฎใใจ]>=3",
"deck:ๆฅๆฌ่ช::Mining occurrences:็ฉข็ฟผใฎใฆใผในใใฃใข>=3 added:14",
"deck:ๆฅๆฌ่ช::Mining occurrences:็ฉข็ฟผใฎใฆใผในใใฃใข>=10 added:14",
"deck:ๆฅๆฌ่ช::Mining occurrences:้ญๆณๅฐๅฅณใ้ญๅฅณ่ฃๅค>=10 added:14",
"deck:ๆฅๆฌ่ช::Mining occurrences:[ใใใใใใใฎ,ใใใใใใใฎ2,ใใใใใใใฎ3]>=20 added:14",
"deck:ๆฅๆฌ่ช::Mining occurrences:็ฉข็ฟผใฎใฆใผในใใฃใข>=7",
"deck:ๆฅๆฌ่ช::Mining occurrences:็ฉข็ฟผใฎใฆใผในใใฃใข>=5"
],
"priority_search_mode": "sequential",
"sort_field": "FreqSort",
"sort_reverse": false,
"tuning": {
"priority_cutoff": null,
"normal_prioritization": null,
"priority_limit": null,
"shift_existing": true
},
"sync_behavior": {
"reorder_on_sync": true,
"auto_update_dicts": false
},
"word_fields": {
"expression_field": "Expression",
"expression_reading_field": "ExpressionReading"
}
}
```
My first searches pick the most frequent words in the VN I'm reading now. Later searches pick frequent words from VNs I plan to read next.
Installation
- Install from AnkiWeb.
- Restart Anki.
You need a note type with frequency data. I recommend Lapis. To add frequency data to existing cards, see backfill-anki-yomitan.
Quick Start
The default config prioritizes cards added in the last 3 days. To change it:
- Go to Tools โ Add-ons, select Priority Reorder and press Config.
- Edit the settings you want. For cards added in the last 5 days:
{
"priority_search": [
"deck:ๆฅๆฌ่ช::Mining added:5"
],
"normal_search": "deck:ๆฅๆฌ่ช::Mining",
"sort_field": "FreqSort"
}
A deck name with spaces needs escaped quotes: "\"deck:ๆฅๆฌ่ช::Mining Deck\" added:5". Occurrence dictionary folder names can't contain spaces at all, so rename the folder.
- Set
sort_field to the frequency field of your note type (e.g. "FreqSort" or "Frequency").
- Press OK.
The addon reorders your new cards after every sync, then syncs once more so your other devices get the new order. Press Ctrl+Alt+` to reorder by hand.
The searches and sorting sit at the top level of the config. Everything else is grouped into the matching, tuning, sync_behavior, today_new_limit and word_fields sections.
How it Works
The addon splits your new cards into two queues:
- Priority queue: cards matching
priority_search, shown first.
- Normal queue: cards matching
normal_search, shown after.
Each queue is sorted by sort_field. A card matching both goes in the priority queue, so in the example above, recent cards are placed first even though they also match the normal search.
Everything lives under Tools โ Priority Reorder: Reorder Cards (Ctrl+Alt+` ), Show Summary, and Update Jiten Occurrence Dictionaries.
Summary Window
Tools โ Priority Reorder โ Show Summary shows what each priority search did in the latest reorder this session. If nothing has run yet, press Run reorder or sync.
The top shows how many cards were prioritized, when, and a bar splitting the priority queue by search. Below, each search gets a row with its kept and matched counts, its place in the queue, and a thin bar showing where its matches went: kept, taken by an earlier search, over its limit=, or cut by priority_cutoff. Click a row for the numbers and for buttons that open those notes in the Browser. Edit config and Run reorder are at the top, so you can change a setting and check the result straight away.
In "mix" mode the searches are pooled before sorting, so each row shows only its matched count.
In "cycle" mode, a search that takes several turns shows two ranges, such as 1โ5, 2981โ3400 โป: its first turn, then the stretch where its later turns alternate with the other searches. Hover the range for the number of turns. The bar shows each first turn in place, then a striped stretch for the later turns; hover it to see which searches placed how many cards there.
Search Terms
Mix these into any Anki search:
| Term |
Short |
Matches by |
f<10000 |
|
value of your sort field |
length>=3 |
l>=3 |
characters in the expression field |
occurrences:Name>5 |
o:Name>5 |
times the word appears in an occurrence dictionary |
seen:7 |
s:7 |
whether the word appeared in the last 7 days |
kanji:new=1 |
k:new=1 |
number of kanji you haven't learned |
kanji:new_reading>=1 |
k:new_reading>=1 |
number of kanji in a reading you haven't learned |
kanji:num=2 |
k:num=2 |
number of kanji |
limit=20 |
|
keeps only the top 20 of this search (config only) |
All of them except limit= also work in the Browse search bar and through the collection API (and so AnkiConnect), which makes the Browser a good place to try a search before you put it in your config. They use the same matching settings, word_fields and sort_field as the reorder. Comparisons can be =, !=, <, <=, > or >=, and a leading - negates a term (-seen:30).
The short forms are the same terms, and you can mix the two. limit= has no short form, because l belongs to length. If one of your note types has a field named o, k, s or l, the short form hides searches on that field, so use the long form there. Short forms also work only while this addon is enabled, so write the long form in a search you plan to share.
Frequency (f)
f<10000 or f>=30000 compares the number in your sort field. It's most useful combined with other terms, e.g. to keep only the common words from an occurrence search.
Length (length)
length>=3 matches expressions of 3 or more characters, length=1 single-character words. The raw field value is counted in Unicode characters, with no HTML stripping, so markup counts toward the length. An empty field has length 0.
Occurrences (occurrences:)
Prioritize words from specific media, using Yomitan occurrence dictionaries.
occurrences:้่ฒใ้ฅใ>=5 matches words that appear 5 or more times in ้่ฒใ้ฅใ.
occurrences:[้่ฒใ้ฅใ,็ฉข็ฟผใฎใฆใผในใใฃใข]>=10 adds up the counts from both.
occurrences:all>=10 adds up every dictionary in user_files, for words common across all your media.
Setting up occurrence dictionaries
Download them from Jiten: each media page has them under Download deck -> Yomitan (occurrences).
- Go to Tools โ Add-ons, select Priority Reorder and press View Files.
- Open the
user_files folder.
- Create a folder named after the dictionary, e.g.
้่ฒใ้ฅใ. The folder name is what you type after occurrences:, so it can't contain spaces.
- Unzip the Jiten download into it. The addon reads every
term_meta_bank_*.json, and the updater needs index.json:user_files/
โโโ ้่ฒใ้ฅใ/
โ โโโ index.json
โ โโโ term_meta_bank_1.json
โโโ ็ฉข็ฟผใฎใฆใผในใใฃใข/
โโโ index.json
โโโ term_meta_bank_1.json
- Set
word_fields to match your note type. For Lapis:"word_fields": {
"expression_field": "Expression",
"expression_reading_field": "ExpressionReading"
}
Updating occurrence dictionaries
The addon can update dictionaries that came from Jiten.
- Tools โ Priority Reorder โ Update Jiten Occurrence Dictionaries checks all of them now.
"auto_update_dicts": true in the sync_behavior section checks once a day, after a sync.
Jiten's API allows roughly 10 requests per minute, so with more than 10 dictionaries an update pauses to wait out the limit. If that makes syncing feel slow, leave auto_update_dicts off and update from the menu.
Matching options
By default a card counts only the entries that exactly match its expression and reading. The options in the matching section also credit it with related entries:
"matching": { "prefix_matching": true, "variant_matching": true }
They apply wherever occurrences: and seen: run, in the reorder and in the Browse bar. All are off by default, and they combine without counting an entry twice.
| Option |
Card gets the counts of |
Example |
kana_normalization |
the same word in the other kana script |
ใฎใชใฎใช โ ใใใใ |
combine_word_forms |
every reading of its expression, plus kana-only entries of its reading |
ๅไบฌ โ all ๅไบฌ entries |
prefix_matching |
longer entries that start with it |
ๅฝซๅป โ ๅฝซๅปๅฎถ |
suffix_matching |
longer entries that end with it |
ๅญฆๆ ก โ ๅฐๅญฆๆ ก |
variant_matching |
other spellings of the same word |
็
ใใ โ ็
ใ |
stem_matching |
its noun form |
ๆใใ โ ๆใ |
compound_matching |
compounds built on its stem |
ๅใ โ ๅใๆถใ |
honorific_folding |
its ใ/ใ/ๅพก form |
่ถ โ ใ่ถ |
The full rules follow. Every option only adds counts, so the worst a loose match can do is push a card over a threshold early.
kana_normalization and combine_word_forms
kana_normalization folds katakana to hiragana on both the card and the dictionary before matching, in the expression and the reading. These pairs match with it on:
ใฎใชใฎใช/ใฎใชใฎใช and ใใใใ/ใใใใ
ๅไบฌ/ใใณใญใณ and ๅไบฌ/ใชใใใ
ใใฟๅธณ/ใใฟใกใใ and ใญใๅธณ/ใญใใกใใ
combine_word_forms sums every entry under the card's expression, whatever its reading, plus every kana-only entry (ใ) for the card's reading. A ๅไบฌ/ใชใใใ card gets all ๅไบฌ entries and all kana-only ใชใใใ entries. A kana card, whose expression is its reading, isn't counted twice.
The two are independent. With both on, the kana is folded first and the combined lookup runs on the folded keys.
prefix_matching
The card gets the counts of every longer entry that starts with its expression. With entries ๅฝซๅปๅฎถ (100) and ๅฝซๅปๅ (30), a ๅฝซๅป card counts its own entry plus 130, so occurrences:MyDict>=50 can pick it up even if ๅฝซๅป alone appears only a few times.
- 2 characters minimum. A single character is too loose:
ๆ would absorb ๆ็ด and ๆ่ก, where it is only part of the word and often read differently.
- Single kanji, particle phrases. A single-kanji card with a reading is credited by entries of the form kanji + particle (
ใ ใ ใฎ ใซ ใง ใฏ ใ ใธ ใจ), optionally followed by more, when the entry's reading starts with the card's reading plus that particle. ๆใ่ฒธใ (ใฆใใใ) credits ๆ/ใฆ but not ๆ/ใใ
, and ๆ็ด still gives nothing. The bare form counts too: ไฟใซ credits ไฟ/ใใ and ็นใซ credits ็น/ใจใ, so you don't need separate cards for them. The reading check is what keeps out on'yomi compounds and verbs like ็ฉใใ.
- Single kanji, ใใ verbs. An entry that is the kanji plus
ใใ, ใใ or ใใ credits it when the reading matches: ๅฑฏใใ/ใใใใใ credits ๅฑฏ/ใใใ but not ๅฑฏ/ใจใ, and ๆใใ credits ๆ/ใใ. The sound change before ใใ is allowed, so ๅฏใใ/ใใฃใใ credits ๅฏ/ใใค.
- Entries with no reading never count for the single-kanji rules.
- A multi-character card needs none of this:
ๅๅผทใใ already starts with ๅๅผท.
- Turning it on adds a little to the addon's startup time.
suffix_matching
The mirror of prefix matching: the card gets the counts of longer entries that end with its expression. Japanese compounds put the head last, so this gathers a word's family: ๅญฆๆ ก gets ๅฐๅญฆๆ ก, ไธญๅญฆๆ ก and ้ซ็ญๅญฆๆ ก.
- 2+ characters with a kanji. That covers kanji compounds (
ๅญฆๆ ก, ็ฎ็) and kanji-plus-okurigana words (้ฃในใ, ๅผทใ), so compound verbs and adjectives work: ๅบใ gets ๆใๅบใ and ้ฃใณๅบใ, ๅผทใ gets ๅฟๅผทใ and ๅๅผทใ. A bare single kanji (่ช, ๆฅ, ๆ) would absorb whole families with unstable readings and meanings, so it is left out, and so are pure kana cards (ใใ, ใใจ, loanwords).
- Single kanji, particle phrases. As with prefixes, a single kanji is credited only by entries ending in a particle plus the kanji, when the reading ends in that particle plus the card's reading.
ๆฏใฎๆฅ (ใฏใฏใฎใฒ) credits ๆฅ/ใฒ, not ๆฅ/ใซใก, and ไปๆฅ or ๆฅๆฌ่ช give nothing.
- Negative forms. A verb is credited by entries ending in its negative stem plus
ใ or ใฌ: ใซใๆใใใ credits ๆใใ, ็ธๅคใใใ credits ๅคใใ, ่ฆใ็ฅใใ and ่ฆ็ฅใใฌ credit ็ฅใ, and ๆใใ credits ๆใ. The reading has to end the same way, so ใซใๆใใ (ใซใใใใใใ) doesn't credit ๆใ/ใใ ใใ and ๆฐดๅ
ฅใใ (ใฟใใใใ) doesn't credit ๅ
ฅใ/ใฏใใ. ใชใ is left out, because ใคใพใใชใ and ใใ ใใชใ would inflate their base verbs.
- ใฆ-forms. Likewise for entries ending in the verb's ใฆ-form, which dictionaries list for adverbs and set phrases:
ๆฅใใง credits ๆฅใ, ใซๆฒฟใฃใฆ credits ๆฒฟใ, ใใฎๆใซๅใใง credits ๅใถ, ่ฌนใใง credits ่ฌนใ. The reading has to match here too.
- Turning it on adds a little to the addon's startup time.
variant_matching
The card gets the counts of other spellings of the same word, differing in okurigana or kanji. Prefix and suffix matching can't reach these: ็
ใ is neither a prefix nor a suffix of ็
ใใ.
- Rule. An entry counts when its reading is identical to the card's and the kanji of one form all appear in the other, with at least one kanji on each side. A
็
ใใ card gets ็
ใ but not ็ฆใใ (no shared kanji) or ใใใใ (no kanji). Okurigana families fold together: ่ฝ่/่ฝใก่, ๆฐๆ/ๆฐๆใก, ๅญไพ/ๅญใฉใ.
- Why all the kanji, not one. Homophones often share a kanji but are different words. Requiring one form's kanji to sit inside the other keeps
็งๅญฆ and ๅๅญฆ, ไฟ่จผ and ไฟ้, ๅฏพ่ฑก and ๅฏพ็
ง apart.
- Glyph variants. Kanji that KANJIDIC2 lists as variants of each other count as one kanji:
็ใ/็ฏใ, ๆปใ/ๆใ, ้คๆฒน/้ฌๆฒน, ๆๆถ/ๆๆฟค, ็ฑ ๅ/็ฏญๅ.
- Kana spellings don't count, since they have no kanji to compare. Turn on
combine_word_forms as well if you want them. Entries with no reading never match.
- Free while off. When on, each dictionary builds an index once, on first use.
stem_matching
The card, in dictionary form, gets the counts of its noun form: the ้ฃ็จๅฝข (masu-stem) for verbs, and for ใ-adjectives the ใ form and the ใ/ใฟ/ใ nouns. Occurrence dictionaries list these as separate entries, so without this a ๆใใ card scores nothing against a dictionary that has only ๆใ.
- Rule. The card's last kana is changed, and the result has to match an entry in both expression and reading. Ichidan verbs drop
ใ (ๆใใโๆใ). Godan verbs move the last kana from the ใ-row to the ใ-row (้ใถโ้ใณ, ๅพ
ใคโๅพ
ใก, ่ฉฑใโ่ฉฑใ, ๆณณใโๆณณใ). ใ-adjectives take ใ (ๆฉใโๆฉใ) and all three nouns (ๅผทใโๅผทใ/ๅผทใฟ/ๅผทใ).
- No verb-class lookup. Both the ichidan and the godan form are tried and the reading decides, so
่ตทใใ finds ่ตทใ, ่ตฐใ finds ่ตฐใ, and the wrong guess matches nothing.
- One direction only. A
ๆใ card is not credited by ๆใใ. The other way round, a rare derived form would take the count of a far commoner base word and jump the queue (็กใ, seen once, would absorb the thousands of ็กใ). Use prefix_matching if you want that direction.
- Gates. The expression and reading must end in the same kana, which is what makes the tail okurigana, so kanji-final words like
ๅญฆๆ ก never qualify. They must also differ, so a kana-only card can't validate a match (ใใใ won't absorb ใใ). The noun form must be at least 2 characters, which skips ่ฆใโ่ฆ and ็ฅใโ็ฅ.
- Not covered.
ใใ is irregular, so ๅๅผทใใ doesn't reach ๅๅผทใ. ใใ and ใใ verbs do work (ๆใใโๆใ), because they conjugate as ichidan.
- Known misses. A card ending in
ใ that is really a past form gets caught (ๆฅใใโๆฅใ), and a ้ฃ็จๅฝข noun ending in ใ is treated as an adjective (ๅฒใโๅฒใฟ). Across 13 dictionaries that was 2 of 917 matches.
- Costs nothing while off, and nothing extra while on: it builds no index and adds no startup time or memory.
compound_matching
The card, in dictionary form, gets the counts of entries built on its stem. Much verb vocabulary lives here: a dictionary listing ๅฅฎใ็ซใค tells no other option anything about ๅฅฎใ, because it neither starts nor ends with ๅฅฎใ and doesn't share its reading.
- Rule. The same stems stem matching makes, used as a prefix instead of an exact match.
ๅฅฎใ gets ๅฅฎใ็ซใค, ๅใ gets ๅใๆถใ and ๅใๆฑใ, ๅใใ gets ๅใๅ
ฅใใ, ้ฃในใ gets ้ฃใน็ฉ, ้้ใ gets ้้ใใชใ and ้้ใใชใ, ๅฐใชใ gets ๅฐใชใใจใ.
- Both sides must match. The entry has to start with the stem in writing and in reading, which is why
ๆฑใ/ใ ใ gets ๆฑใใใใ/ใ ใใใใ and ๆฑใ/ใใ ใ doesn't.
- Compounds ending in the stem. The stem also counts as the last part of a compound:
็จผใ gets ๆ้็จผใ, ๆญขใพใ gets ่กใๆญขใพใ, ๆใ gets ๆธๆใ, ไผใ gets ๅคไผใฟ. The reading may voice the stem's first sound, as compounds usually do (ๆ่งฆใ, ใฆใใใ, credits ่งฆใ).
- Works alone. It covers the bare stem too. With
stem_matching also on, that entry is counted once.
- No overlap with prefixes. Entries that start with the card as written (
้ฃในใโ้ฃในใใใฎ) belong to prefix_matching whether or not that is on.
- How loose. Across 12 dictionaries, 942 of 9,877 eligible entries gained something, by a median of 9. The gains are real compounds, but the rule can't tell a compound from a relative: transitive pairs cross over (
่ฆๅใโ่ฆๅใ, ่ตทใใโ่ตทใใ), idioms ride along (ๅฝใใโๅฝใใๅ), and a rare base can take a common word's count (็ใ/ใใ, seen twice, absorbs the compounds of ็ใใ). Kana-only cards are excluded as in stem matching, so loanwords are safe.
- Free while off. When on, each dictionary sorts its entries once, on first use.
honorific_folding
The card gets the counts of entries that are the same word with ใ, ใ or ๅพก in front, which is useful when a dictionary lists ใ่ถ or ๅพก็คพ and your card is the bare form.
- Rule. An entry
ใ{X} adds its count to {X} when {X} contains a kanji (ใ่ถใฎ้โ่ถใฎ้, ใ้โ้) or is itself an entry in the same dictionary. A kana-only remainder needs that entry, which blocks junk like ใใใโใใ and ใใฏใใโใฏใใ.
- One direction. An
ใ่ถ card is unchanged, a ่ถ card gains ใ่ถ's count. With entries ใ่ถ (50) and ่ถ (10), ่ถ counts 60 and ใ่ถ 50. With only ใ่ถใฎ้ (9), a ่ถใฎ้ card counts 9.
- Known misses. A remainder with a kanji is folded even when it's a different word or reading: a
้ฃฏ/ใใ card picks up ใ้ฃฏ/ใใฏใ.
Kanji (kanji:)
Prioritize words by the kanji you already know. A kanji is known once it appears in the expression of a card you've learned (a review or relearning card that isn't suspended). Each example also works with k:.
kanji:new=0: every kanji is known.
kanji:new=1: exactly 1 unknown kanji.
kanji:new>=2: 2 or more unknown kanji.
kanji:num=1: exactly 1 kanji.
kanji:num>=3: 3 or more kanji.
A kanji stops being new as soon as one learned word contains it. To raise the bar, add a target: with kanji:new[3], a kanji stays new until 3 learned words contain it (kanji:new is kanji:new[1]). This helps keep practising kanji you've met in only one or two words. The target works on new and new_reading, not on num.
New readings (kanji:new_reading)
kanji:new asks whether you've met the kanji. kanji:new_reading asks whether you've met the reading it has in this word, which is what the card tests.
Once you've learned ้ฃไบ (ใใใใ), kanji:new counts ้ฃในใ (ใในใ) as fully known, though ้ฃ=ใ is new to you. That's the card you're about to fail.
kanji:new_reading>=1: at least 1 kanji in a reading you haven't learned.
kanji:new_reading>=1 kanji:new=0: words made entirely of kanji you know, in a reading you don't.
kanji:new_reading[3]>=1: a reading stays new until 3 learned words use it.
Readings are tracked per kanji, so ็ๆดป (ใใใใค) doesn't teach ็ใใ (ใใใ). Inflections share a reading: ไธใใ and ไธใใ are both ไธ=ใ, while ไธใ (ใฎใผใ) is different. Rendaku isn't a new reading either: ่ก (ใก) covers ้ผป่ก (ใฏใชใข).
Words whose reading doesn't split across their kanji, like ็ซๅท (ใใใฉ), ไปๆฅ (ใใใ) and gikun readings, count as new for every kanji they can't explain. Those are the least predictable readings, so that's usually what you want. When only part of a word is irregular, only that part counts: ็ผ้ก/ใใใญ credits ็ผ=ใ and flags only ้ก.
Set word_fields.expression_reading_field to the field with the kana reading. Cards without a reading never match. Readings are checked against a bundled table built from KANJIDIC2. If this term matches almost every card, the reading field is usually the cause, and the console prints a warning.
Example: occurrences:้่ฒใ้ฅใ>=5 kanji:new=0 kanji:new_reading>=1 finds words common in the VN you're reading that look fully known but will trip you up.
Recently seen words (seen:)
Experimental: seen: may change or be removed in a future version.
Prioritize words from your recent immersion, using daily occurrence dictionaries. The matching options apply to seen: too.
seen:N (short s:N) matches words in the daily dictionary of any of the last N days, however many times they appear. -seen:30 negates it.
seen:1 is today. "Today" follows Anki's "Next day starts at" setting.
- Keep the window small. Cost grows with the number of days:
seen:1 to seen:3 are cheap, while seen:30 and up get noticeably slower, more so with prefix_matching or variant_matching on. Use the smallest window that still means "recent". Reusing the same window in several searches costs nothing extra.
Setting up seen dictionaries
My Daily Occurrences addon writes one for each day, from text that arrives over a websocket (the usual VN setup).
To build them yourself, put them in a _seen folder under user_files, one subfolder per day named YYYY-MM-DD:
user_files/
โโโ _seen/
โโโ 2026-06-11/
โ โโโ term_meta_bank_1.json
โโโ 2026-06-12/
โโโ term_meta_bank_1.json
Each term_meta_bank_*.json is an ordinary Yomitan occurrence dictionary and uses the same word_fields. The _seen folder is reserved: it isn't an occurrence dictionary, so occurrences:all skips it and occurrences:_seen can't reach it. Only seen:N reads it.
Multiple searches
Make priority_search a list, and priority_search_mode decides how the searches combine:
"sequential": all of the first search, then the second, and so on. ["added:3", "tag:ใใใซใฒใผใ ::้่ฒใ้ฅใ"] puts recent cards first, then the ้่ฒใ้ฅใ cards.
"mix": every match in one pool, sorted together.
"cycle": the searches take turns, each placing its next limit= cards, until all run out. ["deck:A limit=10", "deck:B", "deck:C limit=5"] places A's top 10, all of B, C's top 5, then A's next 10, C's next 5, and so on. Without any limit= this is the same as "sequential".
Limits and cutoffs
limit=X in a search keeps only its top X cards (added:3 limit=20: the 20 most frequent recent cards). In "cycle" mode it's the number of cards per turn, and the rest wait for the next turn.
tuning.priority_limit caps the whole priority queue.
tuning.priority_cutoff sends priority cards whose sort value is past this number (the rarer words, with a frequency-rank field) to the normal queue.
tuning.normal_prioritization does the opposite: normal cards with a sort value under this number join the priority queue, after all your searches.
Fitting the day's new cards to the queue
With today_new_limit on, a deck's new card limit rises for the day to fit the priority queue: 26 priority cards on a 10-a-day preset gives you 26 that day. It uses Anki's Today only limit, so the preset is never changed.
"today_new_limit": { "enabled": true, "decks": ["ๆฅๆฌ่ช"], "max": 60 }
Name the deck you click to study. The limit is recalculated on each reorder until you study your first new card of the day, then holds. config.md has the details.
Credits
Kanji reading and variant data is derived from KANJIDIC2, Copyright ยฉ the
Electronic Dictionary Research and Development Group,
used under the CC BY-SA 4.0 licence. The bundled
kanji_readings.txt and kanji_variants.txt are modified extracts (readings and variant groups only, re-encoded) and are likewise CC BY-SA 4.0.