feat(rag): 添加相对路径搜索功能并优化文件显示

- 在RagFileRepositoryImpl中新增relativePath字段和路径模式构建方法
- 实现buildRelativePathPattern方法用于构建相对路径搜索模式
- 修改page方法添加相对路径模糊查询支持
- 在RagFileReq DTO中添加relativePath参数字段
- 优化KnowledgeBaseDetail页面中的文件名显示逻辑
- 添加normalizePath函数处理文件路径规范化显示
This commit is contained in:
2026-01-30 21:50:53 +08:00
parent ca7ff56610
commit cbad129ce4
3 changed files with 39 additions and 30 deletions

View File

@@ -20,6 +20,8 @@ import java.util.List;
*/
@Repository
public class RagFileRepositoryImpl extends CrudRepository<RagFileMapper, RagFile> implements RagFileRepository {
private static final String RELATIVE_PATH_KEY = "\"relativePath\":\"";
private static final String PATH_SEPARATOR = "/";
@Override
public void removeByKnowledgeBaseId(String knowledgeBaseId) {
lambdaUpdate().eq(RagFile::getKnowledgeBaseId, knowledgeBaseId).remove();
@@ -42,9 +44,25 @@ public class RagFileRepositoryImpl extends CrudRepository<RagFileMapper, RagFile
@Override
public IPage<RagFile> page(IPage<RagFile> page, RagFileReq request) {
String relativePathPattern = buildRelativePathPattern(request.getRelativePath());
return lambdaQuery()
.eq(RagFile::getKnowledgeBaseId, request.getKnowledgeBaseId())
.like(StringUtils.hasText(request.getFileName()), RagFile::getFileName, request.getFileName())
.like(StringUtils.hasText(relativePathPattern), RagFile::getMetadata, relativePathPattern)
.page(page);
}
private String buildRelativePathPattern(String relativePath) {
if (!StringUtils.hasText(relativePath)) {
return "";
}
String normalized = relativePath.replace("\\", PATH_SEPARATOR).trim();
while (normalized.startsWith(PATH_SEPARATOR)) {
normalized = normalized.substring(1);
}
if (!StringUtils.hasText(normalized)) {
return "";
}
return RELATIVE_PATH_KEY + normalized;
}
}

View File

@@ -14,5 +14,6 @@ import lombok.Setter;
@Getter
public class RagFileReq extends PagingQuery {
private String fileName;
private String relativePath;
private String knowledgeBaseId;
}