본문 바로가기

Crescent

[crescent] 12/8 기능추가

새벽에 일어나서.. Filter 기능을 추가하였습니다.


### Crescent에서는 Query보다 더 빠른 검색을 위해 Filter를 제공합니다.

### 형태는 CustomQuery와 동일한 문법을 사용합니다.

### 파라메터명은 ft입니다.


예제>

search.devys?col_name=sample&keyword=나이키&ft=title:"운동화"


search.devys?col_name=sample&keyword=나이키&ft=create_date:"[20120101 TO 20120130]"


쿼리와의 차이점은 검색에서 제외되는 document들이 ranking을 결정하는데 영향을 주냐 안 주냐의 차이입니다.

예를들어 아래와 같이 2개의 document가 있다고 가정하면..


1) 장소:"한국", "서울" 본문:"저는 서울에 삽니다.", "서울 좋아요"

2) 장소:"서울 노원", "서울 남대문", "서울" 본문: "저는 서울이 좋아요"


query=+장소:"서울" +본문:"서울" 

일 경우에는 2번의 document가 1번보다 높은 점수를 받습니다. "서울"이라는 단어의 빈도수가 더 많기 때문입니다.


하지만, 아래의 쿼리

query=+본문"서울" flter=+장소:"서울"

의 경우는 1번의 document 점수가 더 높습니다. 왜냐하면 장소는 ranking을 계산하는 로직에서 제외되고

본문으로만 점수가 결정되는데, 1번의 document의 본문이 더 짧기 때문입니다. (같은 term freq일 경우 해당 문서의 내용이 짧을수록 점수가 높습니다.)


다만, 특정 필드로 정렬을 하는 경우에는 위와같이 ranking에 영향을 받는 경우는 없을것이지만 속도나 캐시측면에서

filter를 사용하는 것은 괜찮은 방법입니다.


그리고, 클래스명에 오타가 있는 것 하나 수정...