본문 바로가기

Crescent

[Crescent] 기능추가 - 커스텀쿼리

crescent에 커스텀 쿼리 기능을 추가하였습니다.

그냥 단순하게 사용 할 경우에는, collections.xml에 defaultSearchField를 지정해놓고

keyword만 날려서 검색을 하거나, search_field 파라메터에 필드를 넣어서 검색을 하면 됩니다.



col_name=sample&keyword=나이키&page_num=1&page_size=50&sort=id_sort desc,name_sort asc&search_field=name,id


여기서 좀 더 쿼리식을 원하는대로 만들어서 검색하고 싶어하는 사용자를 위해 Custom Query 기능을 넣었습니다. 기본적으로 Lucene의 쿼리 Syntax를 사용합니다.


문법은

[+|-]필드명:"키워드" 혹은

[+|-]필드명:"[min To max]" 입니다. 


쿼리문 예제

  1. title:"청바지" dscr:"나이키" (title=청바지 or dscr=나이키)
  2. title:"청바지" +dscr:"나이키" (title=청바지 and dscr=나이키)
  3. price:"[1000 TO 100000]" (price between 1000 and 100000)
  4. title:"청바지" dscr:"나이키" +price:"[1000 TO 100000]" (title=청바지 or dscr=나이키 and (price between 1000 and 100000))


가중치를 주고 싶을 때는 아래와 같이 사용합니다.

title:"청바지^10"

만약에 collections.xml의 설정에 title 필드에 대해서 가중치가 이미 설정되어 있다면, custom query의 가중치 수치와 더해지게 됩니다.

range 검색식을 지원합니다.

+price:"[1000 TO 100000]"

range query에서 [는 한계값을 포함하며, {는 한계값을 제외힙니다.
아래의 식은
+price:"[1000 TO 100000}"
다음과 같이 해석됩니다.
and price >= 1000 and price > 100000

cq파라메터를 사용하여 검색을 요청합니다.
cq=title:"청바지" dscr:"나이키" +price:"[1000 TO 100000]"

cq 조건이 들어올경우 keyword, search_field 파라메터의 값은 무시됩니다.