diff --git a/src/main/java/com/example/g8backend/controller/PostController.java b/src/main/java/com/example/g8backend/controller/PostController.java
index 41be09a..1f7e886 100644
--- a/src/main/java/com/example/g8backend/controller/PostController.java
+++ b/src/main/java/com/example/g8backend/controller/PostController.java
@@ -115,6 +115,7 @@
             @RequestParam(required = false) String keyword,
             @RequestParam(required = false) List<Long> tags,
             @RequestParam(required = false) String author) {
+        System.out.println(keyword + tags + author);
         List<Post> result = postService.searchPosts(keyword, tags, author);
         return ResponseEntity.ok(ApiResponse.success(result));
     }
diff --git a/src/main/java/com/example/g8backend/mapper/PostMapper.java b/src/main/java/com/example/g8backend/mapper/PostMapper.java
index 178df39..2de0429 100644
--- a/src/main/java/com/example/g8backend/mapper/PostMapper.java
+++ b/src/main/java/com/example/g8backend/mapper/PostMapper.java
@@ -11,21 +11,25 @@
     List<Post> getPostsByUserId(@Param("userId") Long userId);
     // 搜索帖子
     @Select("<script>" +
-            "SELECT p.* " +
+            "SELECT DISTINCT p.* " + // 添加 DISTINCT 解决重复问题
             "FROM posts p " +
-            "LEFT JOIN post_tag pt ON p.post_id = pt.post_id " +
-            "LEFT JOIN tags t ON pt.tag_id = t.tag_id " +
-            "LEFT JOIN users u ON p.user_id = u.user_id " +
-            "WHERE (p.post_title LIKE CONCAT('%', #{keyword}, '%') OR p.post_content LIKE CONCAT('%', #{keyword}, '%')) " +
+            "LEFT JOIN users u ON p.user_id = u.user_id " + // 只保留必要的 JOIN
+            "WHERE (p.post_title LIKE CONCAT('%', #{keyword}, '%') " +
+            "   OR p.post_content LIKE CONCAT('%', #{keyword}, '%')) " +
             "<if test='tagIds != null and tagIds.size() > 0'> " +
-            "AND pt.tag_id IN " +
-            "<foreach item='tagId' collection='tagIds' open='(' separator=',' close=')'> " +
-            "#{tagId} " +
-            "</foreach> " +
-            "</if>" +
-            "<if test='author != null'> " +
-            "AND u.user_name = #{author} " +
-            "</if>" +
+            "   AND p.post_id IN ( " + // 改为子查询确保正确过滤标签
+            "       SELECT pt.post_id FROM post_tag pt " +
+            "       WHERE pt.tag_id IN " +
+            "       <foreach item='tagId' collection='tagIds' open='(' separator=',' close=')'> " +
+            "           #{tagId} " +
+            "       </foreach> " +
+            "   ) " +
+            "</if> " +
+            "<if test='author != null and !author.isEmpty()'> " + // 增加空检查
+            "   AND u.user_name LIKE CONCAT('%', #{author}, '%') " + // 改为模糊匹配
+            "</if> " +
+            "ORDER BY p.created_at DESC " + // 添加默认排序
+            "LIMIT 1000" + // 添加结果限制防止性能问题
             "</script>")
     List<Post> searchPosts(@Param("keyword") String keyword,
                            @Param("tagIds") List<Long> tagIds,
diff --git a/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java b/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
index 6e7c4c2..678f3f6 100644
--- a/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
+++ b/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
@@ -87,7 +87,8 @@
     }
     @Override
     public List<Post> searchPosts(String keyword, List<Long> tagIds, String author) {
-        return postMapper.searchPosts(keyword, tagIds, author); // 调用mapper的搜索方法
+        List<Post> results = postMapper.searchPosts(keyword, tagIds, author);
+        return results;
     }
     @Override
     @Transactional
