FTS4 matchinfo 不适用于 android 房间数据库
Posted
技术标签:
【中文标题】FTS4 matchinfo 不适用于 android 房间数据库【英文标题】:FTS4 matchinfo not working with android room database 【发布时间】:2020-10-27 08:39:50 【问题描述】:我在 FTS 虚拟表中有两列(name
和 description
),我想使用 matchinfo
函数在 FTS 中优先考虑 name
列,但在 android 中有空间我收到以下错误:
从表中检索数据时出错。:无法在请求的上下文中使用函数 matchinfo(代码 1 SQLITE_ERROR)
这是我的查询:
@Query("""select workout_cache.id, workout_cache.met, workout_cache.name, workout_cache.workoutDescription, matchinfo(workout_cache_fts, 'pcs') as mi
from workout_cache join workout_cache_fts on workout_cache.id = workout_cache_fts.id
where workout_cache_fts match :text group by workout_cache.id""")
abstract suspend fun query(text: String): List<WorkoutCacheEntityWithMatchInfo>
我的WorkoutCacheEntityWithMatchInfo
班级
class WorkoutCacheEntityWithMatchInfo(
@Embedded
val workout: WorkoutCacheEntity,
@ColumnInfo(name = "mi")
val matchInfo: ByteArray
)
更新:当我不使用连接子句时它工作正常。
【问题讨论】:
【参考方案1】:这很愚蠢。我刚刚删除了group by
子句,它起作用了。
这里更新道:
@Query("""select workout_cache.id, workout_cache.met, workout_cache.name, workout_cache.workoutDescription, matchinfo(workout_cache_fts, 'pcs') as mi
from workout_cache join workout_cache_fts on workout_cache.id = workout_cache_fts.id
where workout_cache_fts match :text""")
abstract suspend fun query(text: String): List<WorkoutCacheEntityWithMatchInfo>
【讨论】:
以上是关于FTS4 matchinfo 不适用于 android 房间数据库的主要内容,如果未能解决你的问题,请参考以下文章
谷歌地图不适用于 ionic cordova run android