다음을 통해 공유


RANK BY 절

쿼리의 결과에는 쿼리에서 반환된 행과 SELECT 절에 순위 열이 포함된 경우 각 행의 순위 값이 모두 포함됩니다. 순위 값은 검색 엔진에서 계산되며 0에서 1000 범위의 정수로 반환됩니다. 순위 결과를 더 의미 있게 만들기 위해 쿼리는 RANK BY 절에서 원시 순위 값을 계산하는 방법을 제어할 수 있습니다.

이 항목은 다음과 같이 구성됩니다.

RANK BY 절

RANK BY 절의 구문은 다음과 같습니다.

WHERE ( <search_condition> ) 
RANK BY [ ( ] <rank_specification> [ ) ]

RANK BY 절은 바로 앞에 있는 search_condition 적용되어 다른 검색 조건에서 반환된 행보다 해당 검색 조건에서 반환된 행에 대해 더 낮거나 높은 순위를 효과적으로 지정합니다. search_condition 둘러싼 괄호가 필요합니다. 순위 사양을 둘러싼 괄호는 선택 사항입니다.

하나 이상의 RANK BY 절을 단일 조건에 적용할 수 있습니다. 괄호를 사용하여 RANK BY 절을 하나씩 추가로 포함할 수 있습니다.

메모

전체 텍스트 조건자는 0에서 1000 범위의 순위 값을 반환합니다. 전체 텍스트가 아닌 조건자가 일치하는 모든 문서의 순위 값은 1000입니다. 순위 값을 수정하면 이 정보를 고려해야 합니다.

 

RANKBY 절의 rank_specification 부분은 순위 값에 적용할 하나 이상의 함수를 식별합니다. WEIGHT 함수는 반환된 행의 원시 순위 값에 승수를 적용합니다. 승수가 작을수록 결과 순위 값이 낮아질 수 있습니다. COERCION 함수를 사용하여 반환된 행에 대한 특정 순위 값을 곱하거나, 추가하거나, 설정할 수 있습니다. 각 순위 사양에는 0개 또는 1개의 WEIGHT 함수와 0개 이상의 COERCION 함수가 포함될 수 있습니다. WEIGHT 및 COERCION 함수가 RANK BY 절에 모두 포함된 경우 WEIGHT 함수가 먼저 있어야 합니다.

WEIGHT 함수

WEIGHT 함수의 구문은 다음과 같습니다.

WEIGHT ( <weight_multipler> ) 

승수는 0.001에서 1.000까지의 10진수여야 합니다. 검색 조건 조건자에서 반환되는 원시 순위 값은 가중치 승수를 곱하여 새 순위 값을 설정합니다.

다음 예제에서 WEIGHT 함수는 System.Document.LastAuthor 필드에 "Theresa"라는 단어가 있는 문서에 System.Author 필드에서 "Theresa"가 있는 문서의 순위 값의 절반을 제공합니다.

WHERE CONTAINS ( System.Author,'"Theresa"' ) 
         RANK BY WEIGHT ( 1.000 )
      OR
      CONTAINS ( System.Document.LastAuthor,'"Theresa"' ) 
         RANK BY WEIGHT ( 0.500 ) 

 

메모

CONTAINS 및 FREETEXT 조건자 열 가중치 기능은 검색 용어와 승수("software":0.25) 사이의 콜론을 사용하는 약식 형식을 지원합니다. RANK BY 절은 단축된 형식을 지원하지 않습니다.

 

RANK BY WEIGHT를 사용하는 경우 제한이 있습니다. 부울 조건을 사용하는 CONTAINS 절에서는 작동하지 않습니다. 예를 들어 다음 예제는 허용되지 않습니다.

CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )

COERCION 함수

순위 강제 변환 함수를 사용하여 반환된 순위 값을 더하거나 곱하거나 특정 값을 할당하여 변경할 수 있습니다.

COERCION 함수의 구문은 다음과 같습니다.

COERCION ( <coercion_operation> , <coercion_value> )

강제 변환 값은 정수 값입니다.

다음 표에서는 사용 가능한 강제 변환 작업 설정을 설명합니다.

강제 변환 작업 묘사 값 범위
절대의 반환되는 순위 값은 강제 변환 값에 지정된 값입니다. 0~1000
더하다 반환되는 순위 값은 원시 순위 값과 지정된 강제 변환 값의 합계입니다. 0~1000
곱하다 반환되는 순위 값은 원시 순위 값 및 지정된 강제 변환 값의 곱입니다. 0~1000
MINMAX 반환되는 순위 값은 지정된 최소 및 최대 강제 변환 값 사이의 CONTAINS 또는 CONTAINSSEMANTIC에서 일치하는 항목의 0-1000 순위 점수의 선형 매핑입니다. 0~1000

중요하다

검색은 0에서 1000까지의 범위에서만 순위 값을 반환할 수 있습니다.

다음 예제에서는 강제 변환 함수를 사용하여 제목에 "computer"가 있는 모든 문서를 1000의 순위로 설정하는 동시에 제목에 "computer"와 "software"가 모두 포함된 문서의 순위를 1/4로 줄입니다.

WHERE CONTAINS ( System.Title, 'computer' )
        RANK BY COERCION ( ABSOLUTE , 1000 )
        OR 
       CONTAINS ( System.Title, '"computer" AND "software"' )
        RANK BY COERCION ( MULTIPLY, 0.750 ) 

다음 예제에서는 COERCION 함수를 사용하여 의미 체계 일치에 따라 문서의 원시 순위를 "computer"라는 용어로 500에서 800 사이의 범위에 매핑합니다.

WHERE CONTAINSSEMANTIC('text', *, 'computer', 1033)
OR CONTAINSSEMANTIC('image', *, 'computer', 1033)
RANK BY COERCION(MINMAX, 500, 800)
ORDER BY System.Search.Rank DESC

 

Merge(<merge_operation>)

RANK BY 절과 함께 모든 결과의 순위를 집계하여 최종 순위가 지정된 병합 결과 목록을 생성하는 데 사용됩니다.

MERGE 함수의 구문은 다음과 같습니다.

RANK BY MERGE ( <merge_operation>) 

병합 작업

다음 표에서는 merge_operation 매개 변수에 대해 지원되는 작업에 대해 설명합니다.

병합 작업 묘사
CONVEXCOMBINATION 이 병합 알고리즘은 쿼리에 CONTAINS(어휘 검색), CONTAINSSEMANTIC('Text',...) 및 CONTAINSSEMANTIC('Image'...) 절이 포함된 경우에만 사용해야 합니다. (텍스트 및 이미지에서 의미 체계 검색). 가중 합계 접근 방식을 사용하여 이 세 절의 점수를 결합하여 의미 체계 점수에 비해 더 큰 가중치를 할당하여 어휘 점수에 더 높은 우선 순위를 부여합니다. 최종 순위는 0에서 1000 사이입니다.
MIN 이 병합 알고리즘은 AND 커서의 경우 기본 동작입니다. 모든 결과에서 최소 순위를 선택합니다.
MAX 이 병합 알고리즘은 OR 커서의 경우 기본 동작입니다. 모든 결과에서 최대 순위를 선택합니다.

메모

OR 커서와 함께 RANK BY MERGE(MIN)를 사용하거나 AND 커서와 함께 RANK BY MERGE(MAX)를 사용하면 예상된 결과가 생성되지 않습니다. 어휘 및 의미 체계 검색 결과를 단일 결과 집합으로 병합할 때는 RANK BY 절과 함께 MERGE 함수를 CONVEXCOMBINATION 연산자와 함께 사용하는 것이 좋습니다.

Example

다음 예제에서는 MERGE 함수를 사용하여 "이미지" 또는 "텍스트" 필드에서 단어 "computer"와 어휘 및 의미상 일치하는 항목을 검색하는 방법을 보여 줍니다. 그런 다음, 모든 결과의 점수를 집계하여 최종 순위 목록을 생성하는 RANK BY MERGE 연산자를 사용하여 검색 결과의 순위를 매깁니다.

WHERE (CONTAINS(*,'computer', 1033)  
OR CONTAINSSEMANTIC('Image', *, 'computer', 1033)  
OR CONTAINSSEMANTIC('Text', System.ItemNameDisplay, 'computer', 1033)  
OR CONTAINSSEMANTIC('Text', *, 'computer', 1033))  
RANK BY MERGE(CONVEXCOMBINATION) 

CONTAINSSEMANTIC 조건자에 대한 자세한 내용은 CONTAINSSEMANTIC 조건자를 참조하세요.