이번 로그에서는 유저가 집을 찾기 위해 임의의 검색문장으로 검색하였을 때, 유저의 검색 문장과 가장 어울리는 하우스 하우스를 찾아 주는 로직을 구현한 방법에 대해 기록하고자 한다.
하우스 검색을 위한 로직을 구현하기 위해서 다음과 같은 사항을 고려하였다.
검색빈도: 단어형 > 단문형 > 질문형 > 평문형
검색요소란 데이터베이스를 구성하는 필드 중 검색조건에 부합하는 요소들을 선정하였다. 그리고 선정된 요소들 중 '서비스 시용자의 기본 니즈'에 기반하여 우선순위를 설정하였다.
앞에서 설정한 검색요소별 우선순위를 코드 통해 보도록 하겠다. 타입과 행정구역은 가중치 3점, 제목은 2점, 하우스 설명과 하우스 룰은 1점으로 차등 적용하도록 되어있다.
각 검색요소별로 우선순위에 따라 가중치 3 / 2 / 1점 차등 적용
문장형 검색을 위해 한국어의 필수문장 요소를 구분하고 이에 따라 자주 사용되는 형태의 검색문장을 요소별로 구분하는 작업을 진행하였다.
예시문장: 부산 해운대에(부사어) 있는 뷰가(주어) 좋은(서술어) 아파트(목적어)
다음과 같이 필수 문장요소별 우선순위를 설정하였으며, 그 근거는 아래와 같다. 그리고 앞서 데이터베이스의 검색요소별로 우선순위를 설정한 것처럼 각 문장 요소별로 가중치를 주어 가중치가 높은 문장 요소가 사용된 하우스가 더 높은 검색 우선순위를 갖도록 하였다.
주어와 서울어의 생략 예시: 부산해운대에 있는 (뷰가 좋은) 아파트
쪼개진 각 단어들을 문장요소의 특징에 따라 분류하여 가중치를 적용하도록 하였다.
서술어의 경우 ~다/~이다/~하다 등으로 끝나게 되지만 이런 형식의 문장은 검색에서는 거의 사용되지 않고 다음 단어를 형용하는 은/는 의 형태로 변화되어 사용된다. 따라서 주어와 같이 ‘은/는’에서 가중치 2점이 적용이 될 수 있도록 하였다.
또한 조사가 생략된 부사어와 목적어는 검색문장에서 핵심적인 역할을 하는 경우이므로, 위 가정문에 해당하지 않으면 일반적인 단어로 볼 수 있으므로 가중치 3점을 적용하도록 하였다.
각 문자요소별로 우선순위에 따라 가중치 차등 적용