Typing a whole shortcode has to land on that shortcode: :heart must offer
heart before heart_eyes, so an exact name outranks a mere prefix of a
longer name. Below those, a shortcode substring beats a keyword hit, because
the user is typing shortcodes here, not synonyms.
Ranking collects into per-tier buckets rather than sorting by score, so
equally-ranked items keep the source order of the set instead of depending
on the sort's tiebreak.
Search the emoji set, best match first.
Typing a whole shortcode has to land on that shortcode:
:heartmust offerheartbeforeheart_eyes, so an exact name outranks a mere prefix of a longer name. Below those, a shortcode substring beats a keyword hit, because the user is typing shortcodes here, not synonyms.Ranking collects into per-tier buckets rather than sorting by score, so equally-ranked items keep the source order of the set instead of depending on the sort's tiebreak.