瀏覽代碼

[mob] Fix: use DB to identify indexed fileIDs

Neeraj Gupta 1 年之前
父節點
當前提交
d6599f178b

+ 13 - 0
mobile/lib/db/embeddings_db.dart

@@ -63,6 +63,19 @@ class EmbeddingsDB {
     return _convertToEmbeddings(results);
   }
 
+  // Get FileIDs for a specific model
+  Future<Set<int>> getFileIDs(Model model) async {
+    final db = await _database;
+    final results = await db.getAll(
+      'SELECT $columnFileID FROM $tableName WHERE $columnModel = ?',
+      [modelToInt(model)!],
+    );
+    if (results.isEmpty) {
+      return <int>{};
+    }
+    return results.map((e) => e[columnFileID] as int).toSet();
+  }
+
   Future<void> put(Embedding embedding) async {
     final db = await _database;
     await db.execute(

+ 2 - 1
mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart

@@ -225,7 +225,8 @@ class SemanticSearchService {
   Future<List<int>> _getFileIDsToBeIndexed() async {
     final uploadedFileIDs = await FilesDB.instance
         .getOwnedFileIDs(Configuration.instance.getUserID()!);
-    final embeddedFileIDs = _cachedEmbeddings.map((e) => e.fileID).toSet();
+    final embeddedFileIDs =
+        await EmbeddingsDB.instance.getFileIDs(_currentModel);
     uploadedFileIDs.removeWhere(
       (id) => embeddedFileIDs.contains(id),
     );