filterDeletedFiles 过滤已删除的文件和已删除的知识库
(results []SearchResultItem)
| 4335 | |
| 4336 | // filterDeletedFiles 过滤已删除的文件和已删除的知识库 |
| 4337 | func (s *SearchService) filterDeletedFiles(results []SearchResultItem) []SearchResultItem { |
| 4338 | if len(results) == 0 { |
| 4339 | return results |
| 4340 | } |
| 4341 | |
| 4342 | // 收集所有需要检查的文件ID和知识库ID |
| 4343 | fileIDs := make([]int64, 0, len(results)) |
| 4344 | libraryIDs := make([]int64, 0, len(results)) |
| 4345 | |
| 4346 | for _, result := range results { |
| 4347 | if result.FileID != 0 { |
| 4348 | fileIDs = append(fileIDs, result.FileID) |
| 4349 | } |
| 4350 | if result.LibraryID != 0 { |
| 4351 | libraryIDs = append(libraryIDs, result.LibraryID) |
| 4352 | } |
| 4353 | } |
| 4354 | |
| 4355 | // 创建已删除资源ID的集合 |
| 4356 | deletedFileIDs := make(map[int64]bool) |
| 4357 | deletedLibraryIDs := make(map[int64]bool) |
| 4358 | |
| 4359 | // 批量查询所有被删除的文件 |
| 4360 | if len(fileIDs) > 0 { |
| 4361 | var deletedFiles []model.File |
| 4362 | err := s.db.Where("id IN ? AND is_deleted = ?", fileIDs, true).Find(&deletedFiles).Error |
| 4363 | if err != nil { |
| 4364 | logger.SysLogf("批量查询已删除文件时出错: %v", err) |
| 4365 | // 出错时继续处理知识库 |
| 4366 | } else { |
| 4367 | for _, file := range deletedFiles { |
| 4368 | deletedFileIDs[file.ID] = true |
| 4369 | logger.SysLogf("标记已删除的文件: file_id=%d", file.ID) |
| 4370 | } |
| 4371 | } |
| 4372 | } |
| 4373 | |
| 4374 | // 批量查询所有被删除的知识库 |
| 4375 | // if len(libraryIDs) > 0 { |
| 4376 | // var deletedLibraries []model.Library |
| 4377 | // err := s.db.Where("id IN ?", libraryIDs).Find(&deletedLibraries).Error |
| 4378 | // if err != nil { |
| 4379 | // logger.SysLogf("批量查询已删除知识库时出错: %v", err) |
| 4380 | // // 出错时继续处理 |
| 4381 | // } else { |
| 4382 | // for _, library := range deletedLibraries { |
| 4383 | // deletedLibraryIDs[library.ID] = true |
| 4384 | // logger.SysLogf("标记已删除的知识库: library_id=%d", library.ID) |
| 4385 | // } |
| 4386 | // } |
| 4387 | // } |
| 4388 | |
| 4389 | // 过滤结果 |
| 4390 | var filteredResults []SearchResultItem |
| 4391 | for _, result := range results { |
| 4392 | // 如果文件或知识库被删除,则过滤掉该结果 |
| 4393 | if (result.FileID != 0 && deletedFileIDs[result.FileID]) || |
| 4394 | (result.LibraryID != 0 && deletedLibraryIDs[result.LibraryID]) { |
no outgoing calls
no test coverage detected