采集向量优化调试

This commit is contained in:
2026-01-08 15:02:44 +08:00
parent 378e6088e7
commit 2a55ddb617
35 changed files with 663 additions and 1112 deletions
@@ -18,10 +18,12 @@ package com.sw.dualscreen.objbox
import android.content.Context
import android.util.Log
import io.objectbox.Box
import io.objectbox.BoxStore
import io.objectbox.BoxStoreBuilder
import io.objectbox.android.Admin
import io.objectbox.android.ObjectBoxLiveData
import io.objectbox.config.DebugFlags
import io.objectbox.exception.DbException
import io.objectbox.exception.FileCorruptException
import io.objectbox.sync.Sync
@@ -64,6 +66,7 @@ object ObjectBox {
boxStore = try {
MyObjectBox.builder()
.androidContext(context.applicationContext)
.debugFlags(DebugFlags.LOG_QUERY_PARAMETERS)
.build()
} catch (e: DbException) {
if (e.javaClass == DbException::class.java || e is FileCorruptException) {
@@ -111,4 +114,42 @@ object ObjectBox {
return true
}
// /**
// * 安全获取 Food 实体 foodVector 字段的向量索引(推荐写法)
// */
// fun getFoodVectorIndex(box: Box<Food>): VectorIndex? {
// return try {
// // 核心修复:使用自动生成的 Food_.foodVector 而非字符串,避免拼写错误
// val foodVectorProperty = Food_.foodVector
// // 获取向量索引(适配 ObjectBox 3.5+ 所有版本)
// foodVectorProperty.vectorIndex
// } catch (e: Exception) {
// // 容错处理:打印错误信息,避免崩溃
// e.printStackTrace()
// null
// }
// }
//
// // 刷新索引的调用示例(结合你之前的更新场景)
// fun refreshFoodVectorIndex(box: Box<Food>) {
// val vectorIndex = getFoodVectorIndex(box)
// vectorIndex?.run {
// // 同步刷新索引(解决查询异常问题)
// refresh()
// // 等待索引构建完成(超时 5 秒,避免无限等待)
// waitUntilBuilt(5000)
// }
// }
//
// // 更新 isDel 字段后的完整调用流程
// fun markFoodAsDeleted(box: Box<Food>, foodId: Long) {
// val food = box[foodId]
// if (food != null) {
// food.isDel = true
// box.put(food)
// // 更新后刷新索引
// refreshFoodVectorIndex(box)
// }
// }
}