2015년 11월 26일 목요일

Apache SOLR 중첩쿼리 관련 번역



다른 쿼리 형식 안에 임의의 다른 쿼리 형식을 중첩하는 유용한 기능은, Solr가 ​다른 쿼리 형식들을 지원하는 쿼리 분석기를 지원하면서 이전에 조용히 추가되었다. 드디어 함수 쿼리 분석기를 위한 고정 중첩 쿼리들이 출시되고, 쿼리 파라메터로 메타데이터 하나를 추가하는 LocalParam들이 생성되거나, 하나의 쿼리(즉 쿼리 문장을 분석하는데 사용하는 쿼리 파서)​의 형식을 바꿀 수 있는, 중첩 쿼리들에 대한 문서를 작성하는데 오래 걸렸다.

LUCENE 구문안의 중첩 쿼리들

Lucene/Solr 쿼리 문에서 다른 형식의 쿼리를 넣는 것은, 마법의 필드 명 _query_ 를 사용하면 간단하다. 다음은 다른 lucene 쿼리 안에 lucene 쿼리 type:poems를 넣는 예제이다:
text:"roses are red" AND _query_:"type:poems"
이번 과정은 자체로는 유용하지 않지만, 쿼리의 형식을 변경할 수 있는 쿼리 프레임웍과 지역 param들과 함께 사용하면 매우 강력해 진다. 다음은 일반적인 lucene 쿼리 안에 하나의 Dismax 쿼리를 넣는 예제이다:
text:hi  AND  _query_:"{!dismax qf=title pf=title}how now brown cow"
그리고 앞-단의 요청을 구성하는 것을 쉽게 할 수 있는 지역 params 안에 역 참조 파라메터를 사용할 수 있다:
&q=text:hi  AND  _query_:"{!dismax qf=title pf=title v=$qq}
&qq=how now brown cow

함수 쿼리 구문 안의 중첩 쿼리들

이 기능은 이전에 동작이 안되던 부분이고, Solr 1.4에서 수정되어 가능해 졌다. 함수 쿼리 안의 어떤 다른 쿼리 형식에 query() 함수를 사용하여 넣어서 사용 할 수 있고, 그 쿼리로 관련 점수를 계산하여 반환한다. 몇가지 예제들이 Solr wiki에 있다.

PURE NESTED QUERY(완전 중첩 쿼리)

또한 완전 중첩 쿼리들을 생성할 수 있게 하는 중첩 쿼리 분석기 플러그인들이 있다. 어떤 쿼리들도 포함하지 않은 중첩 쿼리가 더 유용할까? 놀랍게도 그렇다. 쿼리 요청의 분해가 더 나아진다. 예를들면, 다음은 클라이언트가 원하는 Solr 서버 설정(solrconfig.xml 안의 default 검색 제어자 handler를 사용하는)에 따르는 정확한 쿼리 형식을 남기는, 연관 점수가 추가되는 최신 date boost의 몇가지 정렬들을 나열하는 쉬운 방법을 제공한다. 클라이언트 쿼리는 boost 쿼리로 $datefunc를 지정하면 된다:
q=how now brown cow&bq={!query v=$datefunc}
그리고 solrconfig.xml 안의 default 제어자 handler 는 함수 쿼리로서 datefunc의 실제 정의를 포함하게 된다:

   {!func}recip(rord(date),1,1000,1000)
   [...]
동일한 생각은 클라이언트에게 이런 필터들의 나열 없이도, 복잡한 필터들간의 전환이 가능하게 해준다. 중첩 쿼리 분석기 형식 없이도, 별도의 값(v=$param 같은 지역 param들로)으로 형식뿐만 아니라 쿼리 값의 나열도 가능하게 해준다.

댓글 없음:

댓글 쓰기

BE Band (비밴드) - 2024년 03월 02일 잠실새내 락앤롤욱스 공연

나의 10~20대를 보낸 잠실에서의 공연.. 오랜만에 가보니.. 여기가.. 마눌님과 자주 가던 영화관이었는데... 여긴 뭐가 있었는데... 란 추억도 떠올리며 기분좋게 감.​ 공연장은 좀 협소한 편이었고, 인천의 쥐똥나무 보다는 약간 크고... 인천 ...