ANDROID_LIVE Telegram 551
​​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>
}


Немного подробнее можно почитать в двух статьях: тут и тут.



tgoop.com/android_live/551
Create:
Last Update:

​​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>
}


Немного подробнее можно почитать в двух статьях: тут и тут.

BY Android Live 🤖




Share with your friend now:
tgoop.com/android_live/551

View MORE
Open in Telegram


Telegram News

Date: |

The court said the defendant had also incited people to commit public nuisance, with messages calling on them to take part in rallies and demonstrations including at Hong Kong International Airport, to block roads and to paralyse the public transportation system. Various forms of protest promoted on the messaging platform included general strikes, lunchtime protests and silent sit-ins. How to create a business channel on Telegram? (Tutorial) Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. Polls
from us


Telegram Android Live 🤖
FROM American