В
https://sqlite.org/fts5.html#section_7_1 ясно написано:
xTokenize:
This function is expected to tokenize the nText byte string indicated by argument pText. pText may or may not be nul-terminated. The first argument passed to this function is a pointer to an Fts5Tokenizer object returned by an earlier call to xCreate().
..........
For each token in the input string, the supplied callback xToken() must be invoked.
ВЫ пишете тройку функций xCreate, xDelete, xTokenize. При вызове вашей xTokenize ей будет передан колбэк, который, как правильно подметил
abcd0x00 , нужно будет дергать для передачи движку SQLite готовой (т.е. подготовленной ВАМИ в процессе работы xTokenize) лексемы. Они называют это токен, но вообще это лексема, т.к. вы отдаете кусок из входной строки.
Итого, все максимально просто - вам дается строка, вы по своим алгоритмам и критериям решаете, где в ней какие лексемы. Для каждой найденной лексемы дергаете данный вам xToken, чтобы сообщить эту радостную новость SQLite.
Обязаны ли мы его вызывать?
нет, но если не будете вызывать, ни одной лексемы из входной строки SQLite не получит.
Если его должны реализовать мы
его реализует SQLite.