grep

Engineering

여행 검색의 편리함을 더하다 : 해외 자동완성 개선

박현주Aaron(아론) / 검색플랫폼개발팀여기어때

2024년 12월 12일

원문에서 보기 ↗

안녕하세요. 여기어때컴퍼니 검색추천개발실 아론 입니다.

여행 준비를 할 때, 우리는 종종 검색창에 도시명이나 숙소명을 입력합니다. 그런데 몇 글자만 입력해도 관련된 도시나 숙소 이름이 자동으로 뜨는 경험, 해보셨죠? 바로 검색어 자동완성 기능이 그 역할을 하는데요. 이 기능 덕분에 여행 계획이 훨씬 간편해집니다. 그럼 이 기능이 어떻게 작동하는지, 그리고 왜 유용한지 알아볼까요?

검색어 자동완성, 어떻게 작동할까?

여행을 계획하면서 검색창에 원하는 도시나 숙소를 타이핑할 때, 그 입력을 실시간으로 감지하여 사용자가 입력한 글자에 맞는 예상 검색어를 빠르게 제시해줍니다. 이 제안은 입력한 내용에 맞춰 자동으로 업데이트되며, 사용자가 선택할 수 있도록 리스트 형태로 화면에 표시됩니다. 예를 들어, “파리”라고 입력하면 도시명 “파리”와 파리에 있는 숙소/관광지가 추천됩니다.

그리고 무엇보다 중요한 점은, 사용자가 어떤 검색어를 자주 선택했는지에 대한 데이터를 분석하여, 더 나은 제안을 할 수 있도록 계속해서 개선된다는 것입니다. 이는 반복적인 학습과 최적화를 통해 이루어집니다.

자동완성 기능이 빠르고 원활하게 작동하려면, 지연 시간 없이 즉시 결과를 보여주는 것이 매우 중요합니다. 그래서 시스템은 지속적으로 최적화 작업을 거쳐, 사용자가 검색하는 동안 지체 없이 결과를 제공할 수 있도록 개선됩니다.

왜 자동완성 기능이 유용할까?

자동완성 기능은 단순히 검색 시간을 줄여주는 것을 넘어, 여행 준비를 더욱 효율적으로 도와줍니다. 여행지나 숙소에 대한 정보가 빠르게 제시되기 때문에, 여행객들은 보다 쉽게 원하는 정보를 찾을 수 있습니다.

또한, 검색어 자동완성 기능은 사용자가 예상하지 못한 유용한 정보를 제공하기도 합니다. 예를 들어, 특정 도시를 검색할 때, 관련 숙소뿐만 아니라 해당 도시에서 즐길 수 있는 액티비티나 음식 정보까지 자동으로 뜬다면, 여행 준비가 한층 더 알차고 편리해지겠죠?

그렇다면 여기어때 검색추천개발실에서는 이 자동완성 기능을 어떻게 개선하고 있었을까요? 먼저 말씀드리고 싶은 점은, 이 글을 통해 자동완성에 대한 정답을 제시하는 것이 아니라, 서비스에 최적화된 방식으로 이를 구현하기 위한 다양한 고민을 공유드리고자 한다는 것 입니다.

여행 숙소 예약, 사용자 경험을 위한 작은 변화

여행을 떠나기 위한 첫 걸음은 숙소 예약입니다. 이때, 많은 사람들이 검색창에 도시명이나 숙소명을 입력하죠. 특히 해외 여행지의 경우, 도시명이나 숙소명이 한글 발음으로 여러 가지 형태로 입력되는 경우가 많습니다. 예를 들어, “푸꾸옥”이라는 도시명을 검색한다고 할 때, “푸쿠옥”, “푸쿽” 등 다양한 표기로도 검색될 수 있죠.

이처럼 동일한 도시를 의미하지만 서로 다른 방식으로 표현된 검색어들이 존재할 때, 검색 결과가 제대로 나오지 않거나 부정확한 데이터가 표시될 위험이 있습니다. 예를 들어, “푸꾸옥”을 서비스 도시명으로 설정해놓은 상황에서 사용자가 “푸쿠옥”을 입력하면 어떻게 될까요?

검색 흐름:
서비스 도시명 = 푸꾸옥
[사용자] "푸쿠옥" 입력 > 매칭 도시 탐색 (query=푸쿠옥) > 자동완성 검색결과 없음

이 경우, 사용자가 입력한 “푸쿠옥”에 대해 매칭되는 도시가 없으므로, 자동완성 결과는 표시되지 않습니다. 이런 작은 차이로 인해 사용자가 불편함을 느낄 수 있겠죠.

첫 번째. 동의어 확장 기술로 더 나은 검색 경험 제공

이러한 문제를 해결하기 위해, 우리는 형태소 분석기와 동의어 확장 기술을 활용하여 검색 서비스를 개선했습니다. 이제, “푸쿠옥”과 같은 다른 표기법을 입력해도, 자동으로 동일한 도시명을 검색할 수 있도록 지원합니다. 이렇게 되면, 서비스 도시명인 “푸꾸옥”과 의미가 동일한 다른 검색어들도 매칭되어, 보다 정확한 검색 결과를 제공할 수 있습니다.

우선 동의어 확장 적용을 위해 해외 자동완성 전용 말뭉치를 구성하였습니다.말뭉치는 데이터 특성에 따라 지역(나라/주/도시)과 일반(숙소/관광지)으로 분리하여 각각 구성한 후 통합하였습니다.

[말뭉치 구성 flow]
지역(나라/주/도시)
1. 특수문자 제거, 영문제거
  ex> "웨스턴 케이프(주)" → 웨스턴 케이프 주

2. 공백기준 Term 분리
  ex> 웨스턴 케이프 주 → [웨스턴, 케이프, 주]

3. 1음절 Term 제거
  ex> [웨스턴, 케이프]

4. 지역 말뭉치 구성완료

일반(숙소/관광지)
1. 특수문자 제거, 영문제거
  ex> "오렌지카운티, 캘리포니아 (SNA-존 웨인 공항)" → 오렌지카운티 캘리포니아 존 웨인 공항

2. 공백기준 Term 분리
  ex> 오렌지카운티 캘리포니아 존 웨인 공항 → [오렌지카운티, 캘리포니아, 존, 웨인, 공항]

3. 1음절 Term 제거
  ex> [오렌지카운티, 캘리포니아, 웨인, 공항]

4. 전체 데이터 중 분리된 텀별 빈도(frequency) 수 확인
5. 빈도 수 가 4개 이상인 Term 추출 (개수가 많을 수록 중요한것으로 판단. 텀 개수가 4개 미만인 Term은 중요도 낮음으로 판단.)
  - 한글명이 존재하는 해외숙소 전체 : 70,148 중 10,192건, 약 14.5%
  - 한글명이 존재하는 해외관광지 전체 : 145,556 중 15,797건, 약 11.5%

6. 중복제거
7. 통합 말뭉치 구성 완료

동의어 사전의 경우 관리기능을 이용하여 등록하였습니다.

구축 완료 후 analyzer 확인을 하면 아래와 같이 결과가 나오게 됩니다.

_analyze result

개선된 검색 흐름:
서비스 도시명 = 푸꾸옥, 동의어 = 푸쿠옥, 푸쿽
[사용자] "푸쿠옥" 입력 > 동의어 확장 > 매칭 도시 탐색 (query=푸쿠옥 or 푸쿽 or 푸꾸옥) > 자동완성 검색결과 제공

이제 사용자가 “푸쿠옥”을 입력하면, 시스템은 “푸쿠옥”뿐만 아니라 “푸쿽”, “푸꾸옥” 등 다양한 표기법을 인식하여 동일한 도시를 찾을 수 있도록 도와줍니다.

yeogi.com 자동완성 동의어 확장

두 번째. 국가/주/도시 교차검색 지원

교차검색 기능은 단순히 하나의 검색어만 찾는 것이 아닙니다. 사용자가 입력한 국가, 주, 도시, 숙소/관광지명을 조합해 한 번에 다양한 관련 정보를 제공합니다.

이 기능은 사용자가 입력한 도시명뿐만 아니라 주, 국가까지 연결해 검색 결과를 제공합니다. 예를 들어, “오사카”라고 입력하면, 일본이라는 국가에 있는 오사카라는 도시 정보뿐만 아니라, 오사카(현)과 그에 포함된 숙소 및 관광지 정보도 함께 추천됩니다. 이렇게 여러 카테고리의 정보를 유기적으로 연결해주는 덕분에, 여행자는 검색 결과를 통해 필요한 정보를 한 번에 얻을 수 있습니다.

또한, 이 교차검색 기능은 사용자가 더욱 구체적이고 정확한 검색을 할 수 있도록 돕습니다. 예를 들어, “일본 오사카 료칸”이라는 검색어를 입력하면, 단순히 일본이라는 국가 안의 오사카라는 도시 정보뿐만 아니라, 그에 속한 숙소 중 료칸이라는 키워드가 포함된 숙소가 제공됩니다. 이렇게 범위를 점차 좁혀가며 검색할 수 있어, 사용자는 원하는 정보를 더욱 정확히 찾을 수 있습니다.

먼저 일본이라는 나라명을 입력하면, 그 안의 모든 도시와 숙소, 관광지를 볼 수 있습니다. 추가로 오사카라는 도시명을 입력하면, 오사카에 위치한 숙소와 관광지로 검색 범위가 좁혀지죠. 마지막으로 료칸이라는 검색어를 추가하면, 오사카 내에서 료칸 키워드가 포함된 숙소만 선별해 결과를 보여줍니다.

이렇게 나라 > 도시 > 숙소 순으로 범위를 좁혀가며 검색할 수 있어, 사용자는 점점 더 구체적이고 원하는 정보에 가까운 검색 결과를 쉽게 얻을 수 있습니다. 교차검색 기능은 여행 준비가 한층 더 효율적이고 편리하게 이뤄지도록 도와줍니다.

yeogi.com 자동완성 교차검색

세 번째. 자동완성 랭킹 개선

자동완성 기능은 이제 단순히 빠른 검색을 넘어서, 정확하고 유용한 검색 결과를 제공하기 위해 랭킹 개선이 이루어졌습니다.

  1. 키워드 매칭 점수 사용자가 입력한 검색어와 숙소명, 도시명, 관광지명이 얼마나 잘 일치하는지에 따라 우선순위를 매깁니다. 예를 들어, “오사카 료칸”을 검색하면, ”오사카”와 “료칸”이라는 키워드가 정확하게 일치하는 숙소가 첫 번째로 표시됩니다. 이 방식은 검색 결과의 정확성을 높여주어, 사용자가 빠르게 원하는 숙소를 찾을 수 있게 합니다.
  2. 도시 인기도 포함 추천순 랭킹 사용 검색 결과는 도시 인기도와 추천순 랭킹을 반영하여 더욱 스마트하고 개인화된 결과를 제공합니다. 사용자가 입력한 검색어에 맞는 인기 있는 지역이 우선적으로 표시되며, 이는 도시 인기도를 바탕으로 산정됩니다. 즉, 여행자들 사이에서 많이 검색된 인기 도시가 상위에 나타나게 되어, 사용자는 인기 있는 여행지부터 손쉽게 확인할 수 있습니다.
개선전 
도시 인기도(숙소갯수 + 판매정보)

개선된 자동완성 랭킹
키워드 매칭점수 + 도시 인기도(숙소갯수 + 판매정보 + 리뷰정보 + 기타)

이렇게 자동완성 랭킹은 정확한 키워드 매칭과 인기 있는 지역을 강조하는 방식으로 설계되어, 사용자가 보다 쉽고 정확한 선택을 할 수 있도록 돕습니다. 이를 통해 숙소 검색 경험이 더욱 향상되어, 여행 준비 과정이 한층 더 편리하고 즐거운 경험이 될 수 있도록 지원하는 핵심 기능입니다.

yeogi.com 자동완성 랭킹개선

작은 변화가 만들어내는 큰 차이

비록 서비스 전체에서 보면 사소한 개선일 수 있지만, 이런 작은 변화가 고객에게는 큰 차이를 만들어낼 수 있다고 생각합니다. 자동완성 검색 결과에서 누락되는 데이터나 잘못된 정보가 표시되는 상황을 최소화 함으로써, 고객이 더욱 만족할 수 있는 경험을 제공할 수 있게 됩니다.

앞으로도 우리 검색추천개발실 에서는 고객이 불편함을 느끼지 않도록 검색 서비스의 전반적인 만족도를 높이기 위해, 지속적으로 개선해 나갈 것입니다.

읽어주셔서 감사합니다.