From 1f97a284e4a5f017b187f475961c3b46ba9c7473 Mon Sep 17 00:00:00 2001 From: nakyeong Date: Tue, 31 Dec 2024 21:58:27 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[FIX]=20=EC=9D=BC=EB=B0=98=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EC=8B=9C=20=ED=8A=B9=EC=88=98=EB=AC=B8=EC=9E=90=20?= =?UTF-8?q?=EB=AC=B4=EC=8B=9C=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/NovelCustomRepositoryImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java b/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java index 8c2b3f4a5..97e3de49d 100644 --- a/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java +++ b/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java @@ -35,10 +35,10 @@ public class NovelCustomRepositoryImpl implements NovelCustomRepository { @Override public Page findSearchedNovels(Pageable pageable, String query) { - String searchQuery = query.replaceAll("\\s+", ""); + String searchQuery = query.replaceAll("\\s+", "").replaceAll("[^a-zA-Z0-9가-힣]", ""); - BooleanExpression titleContainsQuery = getSpaceRemovedString(novel.title).containsIgnoreCase(searchQuery); - BooleanExpression authorContainsQuery = getSpaceRemovedString(novel.author).containsIgnoreCase(searchQuery); + BooleanExpression titleContainsQuery = getCleanedString(novel.title).containsIgnoreCase(searchQuery); + BooleanExpression authorContainsQuery = getCleanedString(novel.author).containsIgnoreCase(searchQuery); List novelsByTitle = jpaQueryFactory .selectFrom(novel) @@ -67,9 +67,9 @@ public Page findSearchedNovels(Pageable pageable, String query) { return new PageImpl<>(result.subList(start, end), pageable, total); } - private StringTemplate getSpaceRemovedString(StringPath stringPath) { + private StringTemplate getCleanedString(StringPath stringPath) { return Expressions.stringTemplate( - "REPLACE(REPLACE({0}, ' ', ''), CHAR(9), '')", + "CAST(REGEXP_REPLACE(REPLACE(REPLACE({0}, ' ', ''), CHAR(9), ''), '[^a-zA-Z0-9가-힣]', '') AS STRING)", stringPath ); } From f40daac15b2db7f2ee21591df0cfa21cd8537287 Mon Sep 17 00:00:00 2001 From: nakyeong Date: Thu, 16 Jan 2025 14:08:02 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[FIX]=20=ED=8A=B9=EC=88=98=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=EB=A1=9C=EB=A7=8C=20=EA=B2=80=EC=83=89=20=EC=8B=9C?= =?UTF-8?q?=EC=97=90=EB=8F=84=20=EB=B9=88=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WSSServer/repository/NovelCustomRepositoryImpl.java | 3 +-- .../java/org/websoso/WSSServer/service/NovelService.java | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java b/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java index 97e3de49d..3ca263567 100644 --- a/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java +++ b/src/main/java/org/websoso/WSSServer/repository/NovelCustomRepositoryImpl.java @@ -34,8 +34,7 @@ public class NovelCustomRepositoryImpl implements NovelCustomRepository { private final JPAQueryFactory jpaQueryFactory; @Override - public Page findSearchedNovels(Pageable pageable, String query) { - String searchQuery = query.replaceAll("\\s+", "").replaceAll("[^a-zA-Z0-9가-힣]", ""); + public Page findSearchedNovels(Pageable pageable, String searchQuery) { BooleanExpression titleContainsQuery = getCleanedString(novel.title).containsIgnoreCase(searchQuery); BooleanExpression authorContainsQuery = getCleanedString(novel.author).containsIgnoreCase(searchQuery); diff --git a/src/main/java/org/websoso/WSSServer/service/NovelService.java b/src/main/java/org/websoso/WSSServer/service/NovelService.java index 646372bcf..3d4e1de75 100644 --- a/src/main/java/org/websoso/WSSServer/service/NovelService.java +++ b/src/main/java/org/websoso/WSSServer/service/NovelService.java @@ -280,12 +280,13 @@ public FilteredNovelsGetResponse getFilteredNovels(List genreNames, Bool @Transactional(readOnly = true) public SearchedNovelsGetResponse searchNovels(String query, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); + String searchQuery = query.replaceAll("\\s+", "").replaceAll("[^a-zA-Z0-9가-힣]", ""); - if (query.isBlank()) { + if (searchQuery.isBlank()) { return SearchedNovelsGetResponse.of(0L, false, Collections.emptyList()); } - Page novels = novelRepository.findSearchedNovels(pageRequest, query); + Page novels = novelRepository.findSearchedNovels(pageRequest, searchQuery); List novelGetResponsePreviews = novels.stream() .map(this::convertToDTO)