type : query
ICE 내부 특정 NodeType에 대한 쿼리를 실행하기 위한 API 유형으로, 다음과 같은 추가적인 항목을 정의한다.
pid | valueType | description |
---|---|---|
tid | REFERENCE | 대상 Node Type |
customFilter | STRING | 프로그래밍으로 검색 질의를 작성하고 싶은 경우 해당 필터 클래스 설정 |
query | CHILDREN | ICE내에서 공통으로 사용하는 Lucene 기반의 쿼리를 이용하여 검색 조건을 정의 (apiQuery 에 상세 정의) |
apiQuery
pid | valueType | description |
---|---|---|
methohd | CODE | 조회형식, 검색조건
(아래 method 상세 정의) |
field | STRING | 검색할 대상 nodeType의 propertyType id (pid) |
value | STRING | 조건값 |
useCacheKey | BOOLEAN | cacheKey 조합에 사용 여부 |
useCacheKey
cacheKey조합에 사용 여부를 apiQuery field 단위로 설정할 수 있다.
apiConfig의 "cacheable": true
, cacheTime
설정이 되어있어야 useCacheKey 사용 가능하다.
default : true
method
customFilter
apiConfig의 query 조건으로 정의가 힘든 경우 직접 검색 질의를 커스텀 할 수 있다.
apiQuery에 customFilter가 AND로 질의가 추가된다.
커스텀 처리가 필요한 경우 해당 서비스 정의를 해야한다.
아래는 customFilter를 추가하는 사례이다.
Class 추가
location : net/ion/ice/core/query/filter
implements QueryFilter
하는 class 를 하나 생성한다.
@Component 어노테이션 추가
@Component("productSearchFilter")
custom 질의 작성
createQuery안에 Lucene에서 제공하는 쿼리로 직접 질의를 작성할 수 있다.
Lucene Query
|
apiConfig에 customFilter 세팅
@Component 어노테이션 명으로 작성한다.
아래 API 설명
apiConfig query
name을 wildcard로 쿼리
customFilter
tags를 matching으로 쿼리
name의
"analyzer": "simple"
- like 검색을 wildcard로 할 수 있다.tags의
"analyzer": "code"
- 콤마로 tokenize 되어있으므로 쪼개진 word에 대하여 matching으로 equals 검색을 할 수 있다.
name like ‘%오레오%’인 검색 결과
name like ‘%오레오%’ 이고 tags include ‘민트초코’ 인 검색 결과