Skip to content

search-service: 인기 검색어 집계 구현 #105

@koosco

Description

@koosco

목표

실시간 인기 검색어 TOP N을 제공하는 API를 구현한다.

의존관계

구현 내용

1. 인기 검색어 API

GET /api/search/popular?limit=10

Response:

{
  "keywords": [
    {"rank": 1, "keyword": "스마트폰", "searchCount": 1523},
    {"rank": 2, "keyword": "노트북", "searchCount": 982}
  ]
}

2. 구현 방식 (Redis Sorted Set)

  • Key: search:popular:{yyyyMMdd} (일별)
  • Member: 검색어 (정규화: 소문자, trim)
  • Score: 검색 횟수 (ZINCRBY)
  • 검색 API 호출 시 keyword가 있으면 카운트 증가

3. 집계 로직

  • 실시간: 현재 시간 기준 최근 N일 데이터 ZUNIONSTORE
  • 캐싱: 인기 검색어 결과를 1분 TTL로 Redis 캐싱 (빈번한 조회 대응)
  • 정리: 7일 이전 키 자동 만료 (TTL 설정)

4. 기존 mAP@k 메트릭과 연동

  • 검색 품질 메트릭(mAP@k)과 인기 검색어를 조합하여
    인기 검색어별 검색 품질을 모니터링할 수 있는 기반 마련

체크리스트

  • PopularKeywordController 구현
  • Redis Sorted Set 기반 검색어 카운팅
  • 인기 검색어 집계 및 캐싱 로직
  • Public endpoint 설정
  • 단위 테스트 작성

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions