핵심요약
Elasticsearch를 활용한 좌표 기반 검색에서, 랭킹 점수에 거리별 가중치를 적용하는 두 가지 방법(geo_distance 기반 구간 가중치, decay 함수)을 소개하고 각 방식의 특징과 활용 방안을 설명합니다.
Elasticsearch 거리 기반 가중치로 검색 랭킹 최적화
개요
여기어때 검색 서비스에서 Elasticsearch(ES)를 활용한 좌표 기반 검색 시, 기존 랭킹 점수에 거리별 가중치를 부여하여 랭킹이 높으면서 가까운 제휴점을 우선 노출하는 방법론을 공유합니다.
거리 기반 가중치 적용 방법
1. 구간별 거리 가중치 (geo_distance 활용)
- 개념: 특정 좌표점 기준,
geo_distance를 활용하여 거리별 가중치를 부여하고 기존 랭킹 점수에 곱함. - Zone 설정 예시:
- Zone A (~ 3km): 가중치 1.0 (원 점수 유지)
- Zone B (3km ~ 5km): 가중치 0.5 (점수 절반)
- Zone D (5km ~): 가중치 0.1 (하단 배치)
- 단점: 기준점에서 급격한 가중치 변화 발생.
2. Decay 함수 가중치
- 개념: 구간별 가중치와 달리, 거리에 따라 점진적으로 가중치가 감소하여 유연한 값 부여.
- 함수 종류:
exp,gauss,linear제공. gauss함수 활용 쿼리 예시:origin,scale,offset을 조정하여 기존 랭킹 점수와 연계.- 주의사항: 거리가 너무 멀어질 경우 decay 값이 0으로 수렴되어 기존 랭킹 점수가 무시될 수 있음.
결론
- 구간별 거리 가중치: 구현 간단, 명확한 기준 제시 가능하나 경계값 변화가 급격함.
- Decay 함수: 점진적 가중치 감소로 자연스러운 검색 결과 제공 가능.
- 두 방식 모두 Elasticsearch에서 거리 기반 가중치를 적용하여 사용자에게 더 나은 검색 경험을 제공하는 데 활용될 수 있습니다.
팁: 서비스 특성에 맞춰 두 방식의 장단점을 고려하여 적용하거나 조합하여 사용할 수 있습니다.