- 인쇄
- PDF
랭킹 수식
- 인쇄
- PDF
Classic/VPC 환경에서 이용 가능합니다.
검색 결과를 원하는 방식으로 정렬하기 위해 랭킹 수식을 활용할 수 있습니다. 랭킹 수식을 작성하고 검색 시 적용하는 방법에 대해 설명합니다.
정렬 방식을 별도로 설정하지 않으면 검색 결과는 문서 가중치(qds)가 높은 순서대로 정렬됩니다.
랭킹 수식
랭킹 수식은 검색 결과를 정렬하는 기준인 랭킹 점수를 계산하는 식입니다. 일반적으로 랭킹 점수는 적합도(_relevance)로 나타내며 유사도(_similarity)와 품질(_quality)의 합으로 계산합니다.
<예시> 도메인 생성 시 제공되는 기본 랭킹(clous)의 랭킹 수식
_ratio=0.5;
_quality=1.0;
_similarity=qds;
_relevance = _similarity * _ratio + _quality * (1 - _ratio);
랭킹 수식을 직접 작성하면 각 검색 서비스에 알맞은 순서로 검색 결과를 정렬할 수 있습니다.
랭킹 수식 작성
랭킹 수식의 기본 작성 방법은 다음과 같습니다.
- 하나의 함수 형태로 대입문만 사용해 주십시오.
relevance = qds; relevance() = qds; // 위와 완전히 같습니다. relevance( x ) = x*qds;
- 모든 행을 세미콜론(;)으로 구분하여 문자열로 입력해 주십시오.
- 다양한 변수와 속성값, 표현식, 내장 함수를 이용하여 작성해 주십시오.
<예시> 랭킹 수식 작성 예시relevance = min(qry_mtc("q1"), qry_mtc("q2")); normalized_qds = qds/qtermc; normalized_qds_of_q1 = qry_qds("q1") / qry_qtermc("q1"); mtratio = mtc/qtermc;
랭킹 변수 및 속성값
랭킹 수식 작성 시 랭킹 변수와 함께 다양한 속성값을 사용할 수 있습니다.
- 모든 변수는 내부적으로 타입(bool, int, double, string)을 가집니다.
- 언더바(_)로 시작하는 변수는 내부용으로 예약되어 있습니다.
랭킹 변수
랭킹 수식 작성 시 사용할 수 있는 랭킹 변수는 다음과 같습니다.
- 문서 속성값을 나타내는 함수(
dp_섹션이름
): 섹션 생성 시 설정하는 랭킹 변수
<예시> 문서 속성값을 이용한 랭킹 수식_ratio=0.5; _quality= dp_like_cnt * 0.09 + dp_dislike_cnt * 0.01; _similarity=qds; _relevance = _similarity * _ratio + _quality * (1 - _ratio);
- 원하는 변수를 직접 정의
질의 속성
랭킹 수식 작성 시 사용할 수 있는 질의 속성값은 다음과 같습니다.
qtermc
: 질의의 검색어 수로, qds에 가산되는 텀의 수(Query-Term-Count)qry_qtermc(query_name)
: 특정 질의(query_name)의 검색어 수로, 복합 질의의 경우에 개별 질의의 검색어 수를 얻기 위해 사용qry_exist(query_name)
: 특정 질의(query_name)가 존재하는지 여부를 반환epoch_time
: 질의 실행 시작 시점의 시간
문서 점수
랭킹 수식 작성 시 사용할 수 있는 문서 속성값은 다음과 같습니다.
qds
: 문서 가중치, 질의 문서 유사도(Query-Document-Score)qry_qds(query_name)
: 특정 질의(query_name)에 대한 문서 가중치mtc
: 검색 대상 문서에 포함된 질의의 텀 수(Matched-Term-Count)qry_mtc(query_name)
: 특정 질의(query_name)에 대한 검색 대상 문서에 포함된 질의의 텀 수(mtc)
기타
랭킹 수식 작성 시 사용할 수 있는 기타 속성값은 다음과 같습니다.
total_document_count
: 총 검색 결과 문서 수(추정)- 문서 업로드 요청이 수행 중인 경우 총 문서 수는 변경될 수 있습니다.
표현식 및 내장 함수
랭킹 수식 작성 시 다양한 표현식과 내장 함수를 사용할 수 있습니다.
표현식
랭킹 수식 작성 시 사용할 수 있는 표현식은 다음과 같습니다.
- 산술 연산자:
+
,-
,*
,/
- 비교 연산자:
>
,<
,>=
,<=
,==
,!=
- 논리 연산자:
|
,&
,!
- 상수 표현: 정수, 실수,
true
,false
- 조건 표현식:
if - then - else
<예시> 표현식을 이용하여 작성한 랭킹 수식
mtr = mtc/qtermc;
quality = 1.0;
relevance = if mtr >= 0.6 then qds + quality else quality;
내장 함수
랭킹 수식 작성 시 사용할 수 있는 내장 함수는 다음과 같습니다.
min(a, b)
: 최솟값max(a, b)
: 최댓값exp(x)
: 지수log(x)
: 자연로그log10(x)
: 로그sqrt(x)
: 제곱근pow(x, y)
: x의 y제곱
랭킹 수식 사용
작성한 랭킹 수식은 검색 시 검색 쿼리를 다음과 같이 작성하여 사용할 수 있습니다.
- 랭킹 모듈에 랭킹 수식을 저장한 경우
ranking
필드에서 사용할 랭킹 모듈을 지정sort
필드의 파라미터로 랭킹 수식에서 계산한 랭킹 변수를 지정- 랭킹 모듈을 기본 랭킹으로 설정하면
ranking
필드를 설정하지 않아도 됩니다.
- 랭킹 모듈을 기본 랭킹으로 설정하면
- 검색 쿼리에 직접 랭킹 수식을 입력하는 경우
ranking
필드에서 랭킹 수식을 직접 입력sort
필드의 파라미터로 랭킹 수식에서 계산한 랭킹 변수를 지정
<예시> 기본 랭킹의 랭킹 변수(relevance)를 sort
필드의 파라미터로 지정한 검색 쿼리
{
"search": {
"index_name": {
"main": [
{
"name": "q1",
"query": "term"
},
{
"name": "q2",
"query": "test"
}
]
}
},
"sort" : {
"relevance": "desc"
}
}