본문 바로가기

경험

[검색 API 명세 정의 꿀팁] 매개변수 And, Or 조건 사용하기

고급 검색 API를 구현하다 보면 조건이 복잡해질 때가 있다.

예를 들면 아래와 같다.

제목은 '하'로 시작하면서 / '호'도 들어가고 / 아니면 '휴'가 들어간다던가 / 저자는 'CB'인 콘텐츠를 검색해 줘
혹은
일단 제목에 '아이스크림'이 들어가는데, 제목이 '멋있는'이 들어가거나 저자가 '구상덕'씨인 콘텐츠 검색해 줘

 

첫 번째의 경우는 사실 제목에만 조건이 붙어 어찌저찌 구현했었지만,

두 번째의 경우는 같은 Column이 아닌 다른 Column 내에서 조건을 줘야 했기 때문에 혼란에 빠졌었다.

 

그래서 내가 생각한 방법은

 

 

그룹으로 묶어서 검색하자!이다.

일단, 파라미터를 하나로 줄였다. "keywords"로 표현식을 받을 것이다.

 

표현식의 최소 단위는 검색 기준 열(column)과 키워드(keyword)를 묶은 것이다. 구분자는 콜론(:)으로 두었다.

예를 들면, title:하로 둔 것이다.

 

그리고 이 표현식들을 and나 or로 엮는 것이다.

/search?keywords=title:하 and title:호 or title:휴 and author:CB

(공백은 +로 치환해야 하지만 가독성을 위해 생략한다.)

 

나의 경우에는 or은 앞의 조건과의 관계만 맺는 식으로 구현했다. 더 복잡하게 구현하기 위해선 괄호를 추가하는 방식도 있을 것이다.

 

혹여나 고민하고 있을 여러분을 위해 글을 남긴다..!