ngram parsing, for a language that does not use spaces

The default parser splits on whitespace, which produces one enormous token for a language that does not have any.

ALTER TABLE products
  ADD FULLTEXT INDEX ft_name (name) WITH PARSER ngram;

SHOW VARIABLES LIKE 'ngram_token_size';   -- 2

-- every 2-character sequence becomes a token, so the
-- index is large and a single-character search matches
-- nothing.

-- it also changes behaviour for latin text: 'desk'
-- becomes de/es/sk, which matches more and ranks worse.

The size of the resulting index is the cost and it is substantial — every position in every string produces a token. It is also worth knowing that the parser is chosen per index rather than per query, so a column needing both behaviours needs two indexes and two queries, which is usually the point at which a real search engine becomes the cheaper answer.