Elasticsearch(엘라스틱서치) 거리 기반 랭킹 최적화로 사용자 검색 경험 개선

by DD
4개월 전
조회수 314

여기어때는 Elasticsearch(엘라스틱서치)를 활용하여 좌표 기반 검색 서비스를 제공하며, 반경 검색(Radius Search) 및 폴리곤 검색(Polygon Search) 기능을 구현함

기존 랭킹 점수에 거리별 가중치를 부여하여 거리와 랭킹을 모두 고려한 검색 결과를 제공하고자 함

geo_distance를 활용한 구간별 가중치 부여 방식은 급격한 점수 변화로 인해 보완 필요

decay 함수(Decay Function)를 활용하여 유연한 거리 가중치를 적용, 랭킹 점수와 거리 간의 균형을 맞춤

Elasticsearch(엘라스틱서치) geo_distance 쿼리 분석

본문에서는 geo_distance 쿼리를 활용하여 특정 좌표를 기준으로 거리에 따른 가중치를 부여하는 방법을 설명한다.

Zone A(3km 이내): 가중치 1.0을 부여하여 기존 랭킹 점수 유지

Zone B(3km ~ 5km): 가중치 0.5를 부여하여 점수 절반 적용

Zone C(5km 이상): 가중치 0.1을 부여하여 하단 배치

하지만, 특정 거리에서 가중치가 급격하게 변동하는 단점이 존재하며, 검색 결과의 일관성(Consistency)을 저해할 수 있다.

decay 함수를 활용한 유연한 가중치 부여

geo_distance 쿼리의 단점을 보완하기 위해 decay 함수를 활용하여 거리별 가중치를 점진적으로 감소시키는 방법을 제시한다.

decay 함수는 exp, gauss, linear의 3가지 형태를 지원하며, gauss 함수를 활용하여 유연한 곡선 형태의 가중치 부여

origin, scale, offset 파라미터를 적절히 조절하여 기존 랭킹 점수와 조화를 이루도록 설계

거리가 멀어질 경우 decay 값이 0으로 수렴하여 기존 랭킹 점수를 무시하는 문제가 발생할 수 있으므로, 주의 깊은 설정(Careful Configuration)이 필요하다.

Elasticsearch(엘라스틱서치) 쿼리 성능 최적화 방안

본문에서는 Elasticsearch(엘라스틱서치) 쿼리 성능 최적화에 대한 구체적인 내용은 언급되지 않았지만, 거리 기반 검색은 계산 비용(Computational Cost)이 높을 수 있음을 인지해야 한다.

인덱싱(Indexing) 최적화: 위치 정보(Location Data)에 대한 효율적인 인덱싱 전략 수립

쿼리 튜닝(Query Tuning): 불필요한 연산을 줄이고, 필터(Filter)를 활용하여 검색 범위 축소

캐싱(Caching) 전략: 자주 사용되는 쿼리 결과 캐싱을 통해 응답 시간(Response Time) 단축

결과적으로, 데이터 모델링(Data Modeling), 쿼리 설계, 캐싱 전략을 통해 검색 성능을 개선해야 한다.

거리 기반 검색 랭킹 시스템의 한계 및 고려사항

거리 기반 랭킹은 사용자 경험(User Experience) 향상에 기여할 수 있지만, 몇 가지 한계점을 가진다.

거리 외 요소 미반영: 리뷰 점수, 가격, 프로모션 등 다른 중요 요소들을 고려하지 못함

편향된 결과: 특정 위치에 과도하게 집중된 결과가 노출될 수 있음

데이터 품질 의존성: 정확한 위치 정보(Location Information)가 필수적이며, 데이터 품질에 따라 검색 결과가 달라짐

따라서, 다양한 랭킹 요소(Ranking Factors)를 통합하고, A/B 테스트(A/B Testing)를 통해 최적의 랭킹 전략을 지속적으로 개선해야 한다.

Elasticsearch 거리 기반 가중치로 검색 랭킹 최적화하기