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

[#32] 공간 검색 기능 #48

Merged
merged 23 commits into from
Mar 3, 2024
Merged

[#32] 공간 검색 기능 #48

merged 23 commits into from
Mar 3, 2024

Conversation

hoa0217
Copy link
Collaborator

@hoa0217 hoa0217 commented Mar 3, 2024

개요

ElasticSearch를 활용한 공간 검색 기능을 개발하였으며, 통합테스트를 위해 Testcontainer(Redis, RabbitMQ, ElasticSearch)를 도입하였습니다.

작업사항

  • 공간 검색(검색어, 주소, 사용인원, 사용예정일자 및 시간)
    • 단순 쿼리 구현과 ElasticSearch+쿼리를 적용한 API를 분리하였습니다. ➡️ 추후 성능테스트 필요
  • TestContainer도입(Redis, RabbitMQ, ElasticSearch)

변경로직

  • 지번주소, 도로명주소를 전부 저장할 수 있도록 Address 구조 변경
  • Ebedded Redis 제거

- 시도, 구, 동, 지번, 도로명, 건물번호, 나머지주소, 경도, 위도
- 정확한 검색을 위해서 변경

Related: #32
- '사당 스터디룸'으로 검색하면
(한 필드라도 *사당*을 포함) AND (한 필드라도 *스터디룸*을 포함)하는 조건으로 인덱스를 조회한다.

Related: #32
1. 쿼리 스트링으로 필드를 like 조건으로 조회한다. (동적)
2. 서브쿼리로 조건에 맞는 facility가 있는지 조회한다.
 2-1. 예약가능여부 true (필수)
 2-2. maxUser <= max허용인원 (동적)
 2-3. 서브쿼리로 조건에 맞는 스케줄이 있는지 조회한다. (동적)
    1. 사용날짜 = 스케줄날짜
    2. 사용시간 ⊂ 스케줄시간
 2-4. 서브쿼리로 조건에 맞는 reservation이 없는지 조회한다. (동적)
    1. 예약시작시간 < 사용종료시간
    2. 예약종료시간 > 사용시작시간

Related: #32
Controller -> Service로 넘어가기 전, timeRange를 update해주는 메서드 추가

Related: #32
- 싱글톤 방식으로 테스트 컨테이너를 클래스끼리 재사용하도록 설정함.
- 참고 : https://java.testcontainers.org/test_framework_integration/manual_lifecycle_control/

Related: #32
@hoa0217 hoa0217 self-assigned this Mar 3, 2024
@hoa0217 hoa0217 merged commit 6d9bd10 into develop Mar 3, 2024
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant