문서 홈 → MongoDB 실행 및 관리 → MongoDB Atlas
점수 수정
모든 운영자가 사용할 수 있는 점수 수정 옵션은 다음과 같습니다. 자세한 내용과 예제를 보려면 다음 옵션 중 하나를 클릭하세요.
boost
boost
옵션은 결과의 기본 점수에 지정된 숫자 또는 문서의 숫자 필드 값을 곱합니다. 예를 들어, boost
를 사용하면 결과에서 일치하는 특정 문서의 중요도를 높일 수 있습니다.
필드
boost
옵션은 다음 필드를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
---|---|---|---|
value | float | 조건부 | 기본 점수에 곱할 숫자입니다. 값은 양수여야 합니다. value 와 path 중 하나는 필수이지만 둘 다 지정할 수는 없습니다. |
path | 문자열 | 조건부 | 기본 점수에 곱할 값의 숫자 필드 이름입니다. path 와 value 중 하나는 필수이지만 둘 다 지정할 수는 없습니다. |
undefined | float | 옵션 | path 를 통해 지정된 숫자 필드가 문서에 없는 경우 path 를 대체할 숫자 값입니다. 생략하면 기본값은 0 입니다. path 을 지정하는 경우에만 이 값을 지정할 수 있습니다. |
예제
다음 예제에서는 sample_mflix
데이터베이스의 movies
컬렉션을 사용합니다. 클러스터에 샘플 데이터세트가 있는 경우 Atlas Search default
인덱스를 만들고 클러스터에서 예제 쿼리를 실행할 수 있습니다.
샘플 복합 쿼리는 한 검색 기준의 중요도를 다른 검색 기준보다 높이는 방법을 보여줍니다. 쿼리에는 title
및 score
이외의 모든 필드를 제외하는 $project
단계가 포함되어 있습니다.
constant
constant
옵션은 기본 점수를 지정된 숫자로 대체합니다.
참고
constant
및 boost
옵션을 함께 사용하면 안 됩니다.
예제
다음 예에서는 sample_mflix.movies
컬렉션에 대한 기본 인덱스와 복합 연산자를 활용하여 plot
및 title
필드를 쿼리합니다. 쿼리에서 텍스트 연산자는 constant
옵션과 함께 score
를 사용하여 title
필드에 대한 쿼리와 일치하는 결과에서만 모든 점수 결과를 5
로 바꿉니다.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "compound": { 5 "should": [{ 6 "text": { 7 "query": "tower", 8 "path": "plot" 9 } 10 }, 11 { 12 "text": { 13 "query": "tower", 14 "path": "title", 15 "score": { "constant": { "value": 5 } } 16 } 17 }] 18 } 19 } 20 }, 21 { 22 "$limit": 5 23 }, 24 { 25 "$project": { 26 "_id": 0, 27 "title": 1, 28 "plot": 1, 29 "score": { "$meta": "searchScore" } 30 } 31 } 32 ])
위의 쿼리는 다음 결과를 반환하며, title
필드에 대한 쿼리와 일치하는 문서의 점수만 지정된 constant
값으로 대체됩니다.
1 [ 2 { 3 plot: 'Several months after witnessing a murder, residents of Tower Block 31 find themselves being picked off by a sniper, pitting those lucky enough to be alive into a battle for survival.', 4 title: 'Tower Block', 5 score: 8.15460205078125 6 }, 7 { 8 plot: "When a group of hard-working guys find out they've fallen victim to their wealthy employer's Ponzi scheme, they conspire to rob his high-rise residence.", 9 title: 'Tower Heist', 10 score: 5 11 }, 12 { 13 plot: 'Toru Kojima and his friend Koji are young student boys with one thing in common - they both love to date older women. Koji is a playboy with several women, young and older, whereas Toru is a romantic with his heart set on on certain lady.', 14 title: 'Tokyo Tower', 15 score: 5 16 }, 17 { 18 plot: 'A middle-aged mental patient suffering from a split personality travels to Italy where his two personalities set off all kinds of confusing developments.', 19 title: 'The Leaning Tower', 20 score: 5 21 }, 22 { 23 plot: 'A documentary that questions the cost -- and value -- of higher education in the United States.', 24 title: 'Ivory Tower', 25 score: 5 26 } 27 ]
embedded
참고
이 옵션은 embeddedDocument 연산자에서만 사용할 수 있습니다.
embedded
옵션을 사용하여 다음에 대한 방법을 구성할 수 있습니다.
일치하는 여러 내장된 문서의 점수를 집계합니다.
일치하는 내장된 문서의 점수를 집계한 후 embeddedDocument 연산자의 점수를 수정합니다.
참고
Atlas Search embeddedDocuments 인덱스 옵션, embeddedDocument 연산자 및 embedded
점수 옵션이 미리 보기로 제공됩니다. 복제본 세트 또는 단일 MongoDB 샤드의 Atlas Search 인덱스가 Lucene의 20억 개 문서 제한에 도달하면 Atlas Search는 새 문서를 인덱싱하거나 해당 인덱스의 기존 문서에 업데이트를 적용하지 않습니다. 이 기능을 일반적으로 사용할 수 있게 되면 이러한 제한을 수용할 수 있는 솔루션이 마련될 예정입니다. 이 기능 사용과 관련된 문제를 해결하려면 지원팀에 문의하세요.
필드
embedded
옵션은 다음 필드를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
---|---|---|---|
aggregate | 문자열 | 옵션 | 일치하는 포함된 문서의 점수를 결합하는 방법을 구성합니다. 값은 다음 애그리게이션 전략 중 하나여야 합니다:
이 필드를 생략하면 기본값은 |
outerScore | 옵션 | 집계 전략을 적용한 후 적용할 점수 수정을 지정합니다. |
예제
다음 예제에서는 sample_analytics.transactions
컬렉션의 default
인덱스를 사용합니다. 이 인덱스는 transactions
배열의 문서에 대해 embeddedDocuments
유형을 구성하고 transactions.symbol
및 transactions.transaction_code
필드에 대해 string
유형을 구성합니다.
예제
{ "mappings": { "dynamic": true, "fields": { "transactions": { "dynamic": true, "fields": { "symbol": { "type": "string" }, "transaction_code": { "type": "string" } }, "type": "embeddedDocuments" } } } }
문서 배열이 포함된 transactions
필드에 대한 샘플 쿼리에는 출력을 10
개의 결과로 제한하는 $limit
단계, 그리고 $project
단계가 포함되어 있습니다.
account_id
와transaction_count
이외의 모든 필드를 제외합니다.집계 전략과 추가 점수 수정을 적용하는
score
필드를 추가합니다.
이 쿼리는 AMD
를 구매한 계정을 검색하고 가장 큰 단일 AMD
구매(주식 수 기준)에 해당 계정이 이 기간 동안 수행한 트랜잭션 수의 log1p
값을 곱합니다. 다음을 기준으로 계정의 순위를 매깁니다.
단일 트랜잭션에서 구매한
AMD
개수마지막 기간의 트랜잭션 수
1 db.transactions.aggregate({ 2 "$search": { 3 "embeddedDocument": { 4 "path": "transactions", 5 "operator": { 6 "compound": { 7 "must": [ 8 { 9 "text": { 10 "path": "transactions.symbol", 11 "query": "amd" 12 } 13 }, 14 { 15 "text": { 16 "path": "transactions.transaction_code", 17 "query": "buy" 18 } 19 } 20 ], 21 "score": { 22 "function": { 23 "path": { 24 "value": "transactions.amount", 25 "undefined": 1.0 26 } 27 } 28 } 29 } 30 }, 31 "score": { 32 "embedded": { 33 "aggregate": "maximum", 34 "outerScore": { 35 "function": { 36 "multiply": [ 37 { 38 "log1p": { 39 "path": { 40 "value": "transaction_count" 41 } 42 } 43 }, 44 { 45 "score": "relevance" 46 } 47 ] 48 } 49 } 50 } 51 } 52 } 53 } 54 }, 55 { "$limit": 10 }, 56 { 57 "$project": { 58 "_id": 0, 59 "account_id": 1, 60 "transaction_count": 1, 61 "score": { $meta: "searchScore" } 62 } 63 })
Atlas Search는 지난 기간에 거래를 많이 하고 단일 트랜잭션으로 AMD
구매를 많이 한 계정의 순위를 높게 매깁니다.
1 [ 2 { account_id: 467651, transaction_count: 99, score: 19982 }, 3 { account_id: 271554, transaction_count: 96, score: 19851.822265625 }, 4 { account_id: 71148, transaction_count: 99, score: 19840 }, 5 { account_id: 408143, transaction_count: 100, score: 19836.76953125 }, 6 { account_id: 977774, transaction_count: 98, score: 19822.64453125 }, 7 { account_id: 187107, transaction_count: 96, score: 19754.470703125 }, 8 { account_id: 492843, transaction_count: 97, score: 19744.998046875 }, 9 { account_id: 373169, transaction_count: 93, score: 19553.697265625 }, 10 { account_id: 249078, transaction_count: 89, score: 19436.896484375 }, 11 { account_id: 77690, transaction_count: 90, score: 19418.017578125 } 12 ]
function
function
옵션을 사용하면 숫자 필드를 사용하여 문서의 최종 점수를 변경할 수 있습니다. 표현식 을 통해 최종 점수를 계산하기 위한 숫자 필드를 지정할 수 있습니다. 함수 점수의 최종 결과가 0
미만인 경우 Atlas Search는 점수를 0
로 대체합니다.
참고
embeddedDocument 연산자의 operator
의 score
옵션 안에 function
을 사용할 수 있습니다. 그러나 path
옵션이 필요한 함수 점수 표현식의 경우, 표현식의 path
로 지정하는 숫자 필드가 embeddedDocument 연산자의 path
안에 있어야 합니다.
표현식
문서의 최종 점수를 변경하려면 function
옵션과 함께 다음 표현식을 사용하세요.
산술 표현식: 일련의 숫자를 더하거나 곱하는 표현식
상수 표현식은 함수 점수에 상수 를 허용하는 표현식입니다.
가우스 감쇠 표현식: 지정된 비율로 곱하여 점수를 감쇠 또는 감소시키는 표현식
경로 표현식: 인덱싱된 숫자 필드 값을 함수 점수에 통합하는 표현식
점수 표현식: Atlas Search에서 할당된 관련성 점수를 반환하는 표현식
단항 표현식: 단일 인수를 사용하는 표현식. Atlas Search에서는 지정된 숫자의 log10(x) 또는 log10(x+1)을 계산할 수 있습니다.
예제
다음 예제에서는 sample_mflix.movies
컬렉션의 기본 인덱스를 사용하여 title
필드를 쿼리합니다. 샘플 쿼리에는 출력을 5
개의 결과로 제한하는 $limit
단계와 title
및 score
를 제외한 모든 필드를 제외하는 $project
단계가 포함됩니다.