[FEATURE REQUEST] Enable substring matching in “Add tag…” autocomplete (desktop)

During tagging in the desktop Item Pane, autocomplete only matches at the start of a tag. That makes it easy to create near-duplicates, because I often remember the middle of a tag (e.g., typing “risk” for “AI risk”).

Request: Switch the Item Pane tag autocomplete to case-insensitive substring matching (or provide a preference to choose prefix vs. substring).

Why: Faster tagging, fewer duplicates, especially in large libraries. Related threads asking for this behavior:
https://forums.zotero.org/discussion/70687/feature-request-fuzzy-mid-string-tag-search-when-adding-tags
https://forums.zotero.org/discussion/92284/feature-request-tag-autocomplete-not-necessarily-matching-first-letter-typed

Non-breaking specifics: Keep current keyboard controls (↑/↓/Enter/Tab/Esc), debounce suggestions, cap results.

Nice-to-have: diacritic-insensitive matching (normalize NFC) and an option to keep prefix-only for people who prefer it.

Happy to test on a large library.
  • In case anyone is still looking for this, I made a small plugin that does exactly this. It is called Zotero Tag Recommender. It supports multi-word autocomplete, not just first-word matching. In other words, you can type the beginning of any word in a tag (e.g. “gas”, “diff”, or “GDE”) and it will still match “gas diffusion electrode (GDE)”.
    https://github.com/kinranlau/zotero_tag_recommender

    My library has only ~1000 tags, so it works smoothly for me without noticeable performance issues, though larger libraries might behave differently.

    I know this feature has been discussed by the Zotero devs for a while, so hopefully it will make it into a future release in a more optimized form. In the meantime, I thought my plugin might be useful. My plugin also optionally includes AI tag suggestions from a paper’s title and abstract (API key required for that part, but not for autocomplete).

    Feel free to take a look if it is useful to anyone.
Sign In or Register to comment.