Мне сложно понять, как использовать полнотекстовый поиск (FTS) с Android. Я прочитал документацию SQLite на расширениях FTS3 и FTS4. И я знаю это можно сделать на Android. Однако мне трудно найти примеры, которые я могу понять.
Базовая модель базы данных
Таблица базы данных SQLite (с именем example_table
) имеет 4 столбца. Однако есть только один столбец (с именем text_column
), который нужно индексировать для полнотекстового поиска. Каждая строка text_column
содержит текст, изменяющийся по длине от 0 до 1000 слов. Общее количество строк больше 10000.
- Как настроить таблицу и/или виртуальную таблицу FTS?
- Как бы вы выполняли запрос FTS на
text_column
?
Дополнительные примечания:
- Поскольку нужно индексировать только один столбец, использование таблицы FTS (и отбрасывание
example_table
) будет неэффективным для не-FTS-запросов. - Для такой большой таблицы сохранение повторяющихся записей
text_column
в таблице FTS было бы нежелательным. Этот пост предлагает использовать таблицу внешнего контента. - В таблицах внешнего контента используется FTS4, но FTS4 не поддерживается до Android API 11. Ответ может предполагать API >= 11, но комментирование вариантов поддержки более низких версий было бы полезно.
- Изменение данных в исходной таблице автоматически не обновляет таблицу FTS (и наоборот). Включая триггеры в вашем ответе не нужны для этого базового примера, но были бы полезны, тем не менее.