TGViewer
Android Live 🤖 Android Live 🤖 @android_live · 5.12K subscribers
Post #551 3.06K
​​SQLite FTS в Room
#room

Одной из самых нераспространённых, но полезных фич Room является FTS поиск.
FTS или full-text search — это функция, которая позволяет делать поиск по тексту при помощи созданной виртуальной таблицы.

Самым простым решением является использования оператора LIKE. Но есть проблема — это скорость при выполнении запроса. По сути, этот оператор проходит по всей таблице и находит те данные, что соответствуют запросу.

Виртуальные таблицы позволяют значительно увеличить скорость выполнения подобных запросов. Если в приложении много SQL-запросов с LIKE, то стоит присмотреться к этому решению.

Всё что нужно — это использовать аннотацию @Fts4 с указанием родительской таблицы:
@Fts4(contentEntity = Route::class)
@Entity(tableName = "routesFts")
class RoutesFts(val id: String, val title: String)


А также немного изменить написанных запрос, убрав из него LIKE:
@Dao
abstract class RouteFtsDao {
@Query("SELECT * FROM route JOIN routesFts ON route.id == routesFts.id WHERE routesFts.title MATCH :text GROUP BY route.id" )
abstract fun routesWithText(text: String): List<Route>
}


Немного подробнее можно почитать в двух статьях: тут и тут.
More from @android_live
  1. Sep 29, 2026Post #1130
  2. Sep 29, 2026На днях попалась вакансия мечты Вроде всё начинается как неплохо: удалёнка, Kotlin/Jetpack…
  3. Sep 28, 2026На днях ревьювил код, связанный с копированием в буфер обмена И заметил, что многие прилож…
  4. Sep 26, 2026AirDrop на Android, похоже, уже есть на нескольких моделях Android Но, оказывается, всё эт…
  5. Sep 25, 2026Похоже, есть что посмотреть на выходных Недавно вышло интервью с Женей Вороновым Jake Whar…
  6. Sep 15, 2026Google выкатили ARTEMIS Эта инструмент, который превращает обычный текст в реальные действ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →