개요

카카오 로컬 API를 사용하여 검색을 하면 아래와 같이 데이터가 전달된다.

{
    "address_name": "서울 강남구 역삼동 826-14",
    "category_group_code": "FD6",
    "category_group_name": "음식점",
    "category_name": "음식점 > 일식 > 돈까스,우동",
    "distance": "",
    "id": "400665082",
    "phone": "",
    "place_name": "오제제 강남점",
    "place_url": "<http://place.map.kakao.com/400665082>",
    "road_address_name": "서울 강남구 강남대로 358",
    "x": "127.029831075691",
    "y": "37.4950576054328"
}
{
    "address_name": "부산 강서구 명지동 3603-7",
    "category_group_code": "",
    "category_group_name": "",
    "category_name": "스포츠,레저 > 스포츠시설 > 헬스클럽",
    "distance": "",
    "id": "613594213",
    "phone": "051-202-9696",
    "place_name": "아이언짐",
    "place_url": "<http://place.map.kakao.com/613594213>",
    "road_address_name": "부산 강서구 명지국제2로28번길 34",
    "x": "128.90917850994765",
    "y": "35.09271991855823"
},

우리 서비스는 음식점만이 아니라 헬스장, 숙박업소등 다양한 장소의 화장실을 리뷰하는 서비스이기 때문에 카카오 api로 전달받은 데이터 중 카테고리도 필요하다.

하지만 카테고리를 보면 category_group_codecategory_group_name 는 카카오에서 제공하는 큰 범주의 카테고리이고 해당 범주에 없다면 빈 문자열을 반환해준다.

지금 기획에서는 키워드를 통한 검색만 제공할 예정이라 괜찮지만, 추후에 데이터가 쌓이고 카테고리별 검색이 가능해지려면 첫 구현부터 카테고리를 구분할 수 있어야 한다고 생각했다.

category_name 를 통해 받은 카테고리를 어떻게 나누면 좋을지 아이디어를 얻기 위해 카카오맵을 분석해보려고 한다.

카카오맵 분석

아래는 각각 “도봉 맛집”에 대한 로컬 API와 카카오맵의 검색 결과이다.

확인해보면 카카오맵으로 검색한것과 API로 검색한 결과가 똑같은 것을 알 수 있다.

그럼 카테고리는 어떻게 관리하고있을까?

Untitled

A, B, C를 보면 각각 “한식”, “육류,고기”, “한정식”인 것을 알 수 있다.

우리가 받은 api에서도 아래와 같이 나오는 것을 알 수 있다.

"category_name": "음식점 > 한식"
"category_name": "음식점 > 한식 > 육류,고기"
"category_name": "음식점 > 한식 > 한정식"

딱 보니 제일 끝에 있는 카테고리가 작성되는 것을 알 수 있다.

그러면 카카오는 이걸 정규식으로 하는 것 일까? 가능하긴 하지만