Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[🔨fix/#160] 인턴 공고 검색 로직 수정 #161

Merged
merged 2 commits into from
Oct 15, 2024
Merged

Conversation

JungYoonShin
Copy link
Member

@JungYoonShin JungYoonShin commented Oct 11, 2024

📄 Work Description

  • 우선 PR이 늦어진 점 죄송함다..🙇‍♀️

⚙️ ISSUE

📷 Screenshot

  • 영어 대소문자 구분없이 공고 검색 가능
    image

  • 한글 띄어쓰기 관계없이 공고 검색 가능
    image

💬 To Reviewers

👉 검색 플로우 수정(ebfe5c8)

기존에는 영어 대소문자에 따라 검색이 불가능했었는데, 로직을 수정했습니다! 우선 플로우는 아래와 같습니다.

  • 영어 대소문자 구분없이 검색 가능하도록

    • ex) "Naver", "NAVER"
  • 띄어쓰기 구분

    • 검색어가 영어로만 이루어질 경우, 띄어쓰기 지켜야함 ex) Naver != na ver
    • 한글을 포함한 경우 띄어쓰기 무시 ex) "딜라이트 지원"과 "딜라이트지원" 모두 가능

  1. 영어 대소문자 구분없이 검색 가능하도록 -> LOWER() 사용

  1. 검색어가 순수 영문명인지, 아닌지(한글, 숫자포함) 판단 -> 정규 표현식 사용
    private boolean isPureEnglish(String summonerName) {
    //공백은 무시
    return summonerName.replaceAll("\\s", "").matches("^[a-zA-Z]+$");
    }

  1. 위의 2번에 따라 검색 조건 달라집니다.
  • 한글이나 숫자가 포함되어있으면 REPLACE() 사용하여 띄어쓰기에 관계없이 공고가 검색되게 하였습니다.
    private BooleanExpression contentLike(String keyword, boolean isPureEnglish) {
    if(isPureEnglish) {
    return Expressions.stringTemplate("LOWER({0})", internshipAnnouncement.title).contains(keyword);
    } else {
    keyword = keyword.replaceAll("\\s", "");
    return Expressions.stringTemplate("REPLACE(LOWER({0}), ' ', '')", internshipAnnouncement.title).contains(keyword);
    }
    }

🔗 Reference

참고한 블로그

- 영어 대소문자 구분없이 검색 가능하도록
   - ex) "Naver", "NAVER"

- 띄어쓰기 구분
  - 검색어가 영어로만 이루어질 경우, 띄어쓰기 지켜야함 ex) Naver != na ver
  - 한글을 포함한 경우 띄어쓰기 무시 ex) "딜라이트 지원"과 "딜라이트지원" 모두 가능
@JungYoonShin JungYoonShin added the 🔨 fix 버그, 오류 수정 label Oct 11, 2024
@JungYoonShin JungYoonShin self-assigned this Oct 11, 2024
@JungYoonShin JungYoonShin changed the title [🔨fix/#160]: 인턴 공고 검색 로직 수정 [🔨fix/#160] 인턴 공고 검색 로직 수정 Oct 11, 2024
Comment on lines +90 to +96
private BooleanExpression contentLike(String keyword, boolean isPureEnglish) {
if(isPureEnglish) {
return Expressions.stringTemplate("LOWER({0})", internshipAnnouncement.title).contains(keyword);
} else {
keyword = keyword.replaceAll("\\s", "");
return Expressions.stringTemplate("REPLACE(LOWER({0}), ' ', '')", internshipAnnouncement.title).contains(keyword);
}
Copy link
Member

@jsoonworld jsoonworld Oct 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 로직 설계 관련
    순수 영어 키워드와 한글 혹은 혼합 키워드를 구분하는 로직이 잘 설계된 것 같습니다!
    isPureEnglish에 따라 조건을 분리하여 각각의 경우에 맞는 검색 처리를 구현한 부분도 명확해서 좋네요.

질문:
다만, 영어일 때 왜 띄어쓰기를 처리하지 않는지에 대한 배경 설명을 조금 더 부탁드려도 될까요?
예를 들어,

hello world, helloworld

이런 경우가 발생하지 않아서 괜찮은 걸까요?

Copy link
Member Author

@JungYoonShin JungYoonShin Oct 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

음..띄어쓰기에 대해 제가 명확한 기준을 가지지 않았던 것 같네요..! 질문 감사합니다!

장순님이 말씀해주신 "hello world", "helloworld"의 경우처럼 두 단어간 결합한 경우는 생각을 못했고, "Naver", "na ver"의 경우에 조금 더 초점을 맞추어 생각하다보니 영어의 경우 띄어쓰기를 허용하지 않는 걸로 했습니다!

요 경우는 기획측에게 여쭤보는 게 좋을 것 같은데 어떻게 생각하시나요?! @jsoonworld @junggyo1020

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이와 관련해서 기획팀과 다시 한번 의논해보면 좋을 것 같습니다!

Copy link
Contributor

@junggyo1020 junggyo1020 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

단순히 대소문자만 구분없이 받도록 하면 되는줄 알았는데,
생각보다 많은 부분을 고려해야 했군요 ㅎㅎ;;
기획팀에게 전달받은 내용까지 확인 완료했습니다!!
고생하셨어요:)

@JungYoonShin JungYoonShin merged commit 9d8cc46 into develop Oct 15, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔨 fix 버그, 오류 수정
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants