Elastic Search

[Elasticsearch] 검색 정확도와 랭킹

꾸준함. 2024. 6. 19. 17:03

검색 정확도

  • 검색 결과의 정확도나 정합성을 나타내는 지표로 주어진 검색어에 대해 얼마나 적합한 결과가 반환되는지를 평가
  • 일반적으로 검색 엔진은 사용자가 입력한 검색어와 일치하는 문서를 찾아내기 위해 다양한 알고리즘과 기술을 사용하며 이때 검색 정확도는 검색 엔진이 얼마나 정확하고 적합한 결과를 찾아내는지를 측정하는 척도
  • 검색 정확도는 서비스의 신뢰도에 영향을 끼치고 만족도가 떨어질 경우 이탈률 발생시킬 우려가 크기 때문에 매우 중요한 지표

 

1. 검색 정확도의 요소

  • 검색어와 문서 간의 일치도: 검색어와 문서의 일치하는 단어 또는 구절의 유사성 평가
  • 문서의 중요도: 문서의 중요도나 신뢰도를 고려하여 결과의 순위 결정
  • 검색어의 중요도: 검색어에서 어떤 단어가 중요한지를 판단
  • 사용자의 의도 파악: 사용자의 검색 의도를 파악하고 해아 의도에 가장 부합하는 결과 제공

 

2. 검색 정확도를 측정하는 방법

  • Precision
  • Recall
  • MRR
  • MAP
  • NDCG(Normalized Discounted Cumulative Gain)
  • A/B 테스트

 

2.1 Precision & Recall

  • Precision(정밀도): 검색 결과 중 실제로 연관된 결과의 비율
  • Recall(재현율): 실제로 관련된 결과 중 검색 결과에 포함된 비율
  • 둘은 트레이드 오프 관계
    • 정밀도를 높이기 위해서는 관련성을 더 엄격하게 평가하여 잘 못된 관련 문서를 판별하는 경우를 줄여야 함
    • 재현율을 높이기 위해서는 관련성을 더 넓게 평가하여 실제 관련 문서를 놓치지 않도록 해야 함
    • 따라서 트레이드 오프 관계

 

https://en.wikipedia.org/wiki/Precision_and_recall

 

부연 설명

  • True Positives: 실제로 긍정(Positive)인 경우 모델이 긍정으로 올바르게 예측한 경우
  • False Positives: 실제로는 부정(Negative)인 경우 모델이 긍정으로 잘 못 예측한 경우
  • False Negatives: 실제로 긍정(Positive)인 경우를 모델이 부정으로 잘 못 예측한 경우
  • True Negatives: 실제로 부정(Negative)인 경우 모델이 부정으로 올바르게 예측한 경우
  • Precision: TP / (TP + FP)
  • Recall: TP / (TP + FN)

 

2.2 MRR(Mean Reciprocal Rank)

  • 주어진 검색 쿼리에 대한 가장 상위의 정확한 결과를 찾는 데 얼마나 성공적인지를 측정하는 지표
  • 높은 MRR 값은 검색 시스템이 더 정확하고 관련성 높은 결과를 상위에 표시하는 것을 의미
    • 각 사용자마다 검색 결과로 나온 문서 중에 가장 높은 순위의 역수를 계산
    • 각 사용자마다 계산된 점수를 모아 평균 계산

 

https://lamttic.github.io/2020/03/20/01.html

 

MRR 장점

  • 간단하며
  • 검색 결과 중 가장 상위의 결과에 집중하여 가장 관련 있는 문서가 최상위에 있는지를 평가할 때 용이함

 

MRR 단점

  • 하나의 상위 컨텐츠에 집중하기 때문에 여러 문서를 소비하는 것이 더 좋은 경우 평가가 어려움
  • ex) 피드처럼 여러 개의 포스팅을 대상으로 할 때 평가하기 어려움

 

2.3 MAP(Mean Average Precision)

  • 여러 검색 질의에 대한 평균 정밀도를 계산하는 지표
  • 여러 사용자의 검색 질의에 대해 정확한 결과를 반환하는지를 측정하기 위해 사용
  • 사용자의 질의에 대한 정확한 결과가 유지되는지 확인 가능
    • 상위 N개의 결과에서 정밀도 계산
    • 계산된 정밀도의 값을 사용자 별로 평균 내고, 그 결과를 모아 최종 평균 계산

 

https://stats.stackexchange.com/questions/260430/average-precision-in-object-detection

 

MAP 장점

  • 단일 쿼리에 의존하지 않고 다양한 쿼리를 고려하여 검색 결과를 평가
  • 검색 결과의 순위에 따른 정밀도 고려
    • 상위 순위에 정답 문서가 많이 포함되어 있을수록 높은 평가 점수를 받음
    • 사용자 관점에서 중요한 문서가 상위에 위치하는 것을 반영하므로 검색 결과의 품질을 개선할 수 있음

 

MAP 단점

  • MAP는 검색 결과에서 정답 문서를 이진적으로 즉, 정답 문서와 그 외의 문서로만 구분하게 되는데 실제 상황에서는 문서의 관련성이 다양한 정도로 존재할 수 있음을 고려하지 않는 한계 존재
  • 모든 쿼리가 동등한 중요도를 가지는 것이 아닌데 MAP는 모든 쿼리를 동등하게 평가하기 때문에 중요한 쿼리의 영향력이 상대적으로 약화될 수 있음
  • MAP는 쿼리별 정밀도를 계산하고 이를 평균 내는 과정을 거치기 때문에 계산이 복잡하며 이는 대규모 검색 시스템에서 성능 측면에서 치명적인 단점이 될 수 있음

 

2.4 NDCG(Normalized Discounted Cumulative Gain)

  • 검색 결과의 순위를 평가하는 지표
  • 검색 결과의 순위가 사용자의 관심도와 얼마나 일치하는지를 평가
  • 더 높은 순위에 있는 관련성 높은 결과일수록 높은 점수 반영
  • MAP의 목표와 유사하지만 이분법적으로 구분하는게 아닌 더 관련성 있는 문서가 무엇인지에 집중

 

DCG(Discounted Cumulative Gain)

  • 검색 결과의 순위에 따른 상대적인 중요도를 측정하는 평가 지표
  • DCG는 각 문서의 관련성 점수를 사용하여 계산
    • 관련성 점수는 일반적으로 0부터 3까지의 범위를 가지며 높은 점수일수록 해당 문서의 관련성이 높다는 의미

 

  • DCG는 순위별로 가중치를 부여하여 계산하며 순위 1부터 시작하여 순차적으로 가중치를 계산하는데, 가중치는 해당 순위의 관련성 점수에 로그를 적용한 값
    • 상위 순위에 있는 문서의 관련성이 더 크게 반영됨

 

  • 순위별 가중치를 누적하여 합산한 DCG 값을 구함

 

IDCG(Ideal Discounted Cumulative Gain)

  • 이상적인 검색 결과 순위에서의 DCG 값을 나타내는 지표
    • 모든 관련성 점수가 최대로 가정된 상황에서의 DCG 값

 

  • DCG와 동일한 방식으로 순위별 가중치를 계산하고 누적하여 합산한 값을 IDCG로 사용
    • 이상적인 검색 결과에서의 DCG 값을 나타냄

 

https://velog.io/@ann9902/NDCG

 

 

NDCG 장점

  • 검색 결과의 상대적인 품질을 측정하는 지표로써 DCG 값과 IDCG 값 사이의 비율을 계산하여 정규화하기 때문에 타 검색 시스템이나 쿼리에 대한 결과를 비교 가능
  • 검색 결과의 상위 순위에 있는 문서의 관련성이 더 큰 영향을 받기 때문에 사용자가 중요하게 생각하는 문서가 상위에 위치하는 것을 반영 가능

 

NDCG 단점

  • NDCG는 이상적인 검색 결과에서의 최대 가능한 DCG 값(IDCG)을 사용하여 정규화하는데 이상적인 검색 결과를 정의하기 위해 모든 문서의 관련성을 알아야 하는 것이 현실적으로 어렵거나 불가능함
  • DCG 값을 정규화하여 비교 가능한 형태로 만드는데 정규화된 값은 상대적인 품질만을 나타내기 때문에 실제 검색 결과의 절대적인 품질을 직접적으로 알기 힘듦
  • 검색 결과의 순위와 관련성 점수에 민감하여 작은 순위 변동이나 관련성 점수의 차이가 NDCG 값에 큰 영향을 미칠 수 있으며 이는 일부 문서의 작은 변화가 전체적인 평가에 큰 영향을 끼칠 수 있다는 의미

 

2.5 A/B 테스트

  • 여러 가지 검색 알고리즘 혹은 변경된 검색 시스템을 사용하여 사용자의 검색 요청에 대한 결과를 비교하고 평가
  • A/B 테스트를 통해 사용자의 선호도와 반응을 분석하여 검색 정확도를 개선 가능

 

A/B 테스트 장점

  • 데이터에 기반하여 결정을 내리기 때문에 주관적인 의견이나 가정에 의존하지 않음
  • 변형된 요소나 전략의 성능을 비교 분석 가능
  • 제한된 범위에서 실험을 하기 때문에 큰 규모의 변경을 바로 적용하는 것보다 리스크를 줄일 수 있으며 실패한 경우 영향 범위가 제한되므로 부정적인 영향을 최소화할 수 있음

 

A/B 테스트 단점

  • 여러가지 변형을 비교하고, 데이터를 수집하고, 결과를 분석하는 데 시간과 노력이 필요하므로 프로세스가 상대적으로 길어질 수 있음
  • 충분한 표본 크기가 없을 경우 통계적으로 유의미한 결과를 도출하기 어려울 수 있음
  • 특정한 환경이나 상황에서 수행되므로 다른 환경이나 다른 사용자 그룹에 적용할 때 결과가 상이할 수 있음
    • 일반화하기 위해서는 추가 테스트 필요

 

2.6 CTR & CVR

  • CTR(Click-Through Rate): 고아고나 검색 결과 페이지에서의 특정 링크를 클릭한 사용자의 비율을 나타내는 지표
    • 보통 광고나 검색 결과 페이지에서 많은 클릭을 유도하기 위해 사용
    • CTR = (클릭 수 / 노출 수) * 100

 

  • CVR(Conversion Rate): 특정한 액션 혹은 전환을 수행한 사용자의 비율을 나타내는 지표
    • 전환은 보통 구매, 가입, 등록, 다운로드 등의 동작을 의미
    • CVR = (전환 수 / 클릭 수) * 100

 

CTR & CVR 장점

  • 사용자의 클릭과 전환 등 실제 동작을 기반으로 측정하기 때문에 광고나 검색 결과 페이지의 성과를 직접적으로 평가 가능
  • 비교적 간단한 지표로 다른 광고나 검색 결과 페이지 간의 상대적인 성과를 비교하는데 유용
  • 클릭, 전환과 같은 구체적인 동작 바탕으로 계산되기 때문에 데이터 수집과 측정이 비교적 용이한 편

 

CTR & CVR 단점

  • 사용자의 클릭과 전환 등의 동작만을 고려하여 평가하는 지표이기 때문에 사용자의 검색 의도, 만족도, 페이지 품질 등과 같은 다른 중요한 요소들을 간과할 수 있게 됨
  • 해당 링크에 직접적으로 연결된 사용자 동작만을 측정하고 사용자의 전체 행동 경로나 장기적인 행동을 고려하지 않음
  • 사용자의 클릭 의사 결정에 영향을 미치는 다양한 외부 요인들에 의해 영향을 받을 수 있음
    • ex) 광고의 디자인, 문구, 위치 등은 CTR 영향을 줄 수 있음 (닫기 버튼이 매우 작은 면적이 큰 배너 광고)

 

2.7 결론

  • 검색 정확도 왕도가 없음
    • 따라서 최대한 로깅해서 데이터 취합하여 분석할 필요가 있음

 

검색 유사도

  • 유사도는 검색 결과의 정확도를 결정하는 데 사용하는 개념
  • Elasticsearch는 내부적으로 Lucene 검색 엔진을 기반으로 하며 Lucene은 다양한 유사도 측정 알고리즘 제공
  • Elasticsearch에서 제공하는 유사도 종류
    • BM25 (Elasticsearch 5.x 버전부터 채택한 유사도 알고리즘)
    • TF-IDF
    • DFR, DFI, IB 등

 

* 이미 이전 게시글에서 정리했지만 복습 차원에서 다시 정리해 보겠습니다.

 

1. TF-IDF

 

1.1 TF(Term Frequency)

  • 용어 빈도로 문서 내에서 특정 용어가 등장하는 빈도
  • 일반적으로 문서 내에서 많이 등장하는 용어일수록 해당 용어의 TF 값은 높아짐

 

1.2 DF(Document Frequency)

  • 특정 단어가 나타난 문서의 수
  • 특정 단어가 여러 데이터에 얼마나 자주 등장하는지 알려줌

 

1.3 IDF(Inverse Document Frequency)

  • DF의 역수로 특정 용어의 문서 내 등장 빈도에 대한 역수
  • IDF는 전체 문서 집합에서 용어가 등장하는 문서의 수를 역수로 측정
  • 특정 용어가 전체 문서 집합에서 얼마나 희귀한지를 반영하는 지표로 희귀한 용어일수록 IDF 값은 높아짐

 

1.4 TF-IDF(Term Frequency-Inverse Document Frequency)

  • TF와 IDF를 결합한 개념으로 문서 내 특정 용어의 중요도를 측정하는 데 사용
  • 문서 내 특정 용어의 상대적인 중요도를 나타냄

 

1.5 Elasticsearch에서 TF-IDF를 사용하기 위한 설정

 

 

https://ted-mei.medium.com/demystify-tf-idf-in-indexing-and-ranking-5c3ae88c3fa0

 

2. BM25

  • Best Matching 25의 약어로 TF-IDF 알고리즘의 확장된 버전
  • Elasticsearch 7.0 버전부터 기본값이 된 순위 점수 계산 모델

 

2.1 TF-IDF vs BM25

 

  TF-IDF BM-25
가중치 계산 방식 용어의 빈도가 높을수록 해당 용어의 중요도가 높아지며 문서 집합 전반에 걸쳐 희귀한 용어일수록 더 높은 가중치 부여 문서의 길이에 대한 보정과 검색어의 토큰 일치도를 고려하여 가중치 계산
긴 문서에서는 토큰의 빈도가 높아지기 때문에 이를 보정하여 공정한 유사도 측정 가능
IDF 값의 조정 전체 문서 집합에서 용어의 문서 등장 빈도의 역수로 계산
이를 통해 희귀한 용어에 대한 높은 가중치 부여
IDF 값에 대한 조정이 이루어져 희귀한 용어에 대한 IDF 값을 조정하여 검색 결과의 다양성을 보장
너무 희귀한 용어에 대한 영향력을 완화
문서 길이에 대한 보정 문서의 길이에 따라 보정을 고려하지 않음
이에 따라 긴 문서에서는 토큰의 빈도가 자연스럽게 높아짐
문서의 길이에 대한 보정을 고려하여 검색 결과의 정확도를 개선

 

 

https://2meu.github.io/elastic/ELASTIC3-TFIDFvsBM25/

 

rank_feature

  • rank_feature 타입은 Elasticsearch의 특수한 필드 타입으로, 문서의 순위를 조정하는 데 도움을 주며 이러한 필드는 일반적으로 검색 결과의 관련성을 높이기 위해 사용
  • 검색 결과의 순위를 결정하는 데 사용되는 기능
  • 특정 필드의 값을 기반으로 문서의 중요도를 평가하고 이를 활용하여 검색 결과 정렬

 

1. rank_feature 활용

  • 기본적으로 Elasticsearch는 검색어의 일치도에 따라 Relevance Score를 계산하여 문서의 순위를 매기지만 추가적인 정보를 활용하여 더 정확한 순위를 결정하고자 할 때 rank_feature 활용
  • 특정 필드의 값이나 가중치를 고려하여 사용자 정의 순위를 결정하고자 할 때 rank_feature 활용
    • ex) 상품 검색에서 판매량이나 평점 등의 정보를 고려하여 검색 결과 정렬

 

2. rank_feature 필드 매핑 예시

  • 'positive_score_impact: false'로 설정 시 마이너스 요소가 되는 필드값으로 인식

 

 

부연 설명

  • Positive Score Impact: 기본적으로 rank_feature 필드는 값이 클수록 문서의 순위를 높일 수 있으며 이는 positive_score_impact 옵션을 통해 조정 가능
  • Negative Score Impact: positive_score_impact 옵션을 false로 설정하면, 값이 클수록 문서의 순위가 낮아짐
  • 이러한 기능을 활용하면, 검색 결과의 정렬을 사용자에게 더 적합하게 조정할 수 있음
  • sales와 rating은 긍정적인 영향을 미쳐 순위를 높이고, return_sales(환불)는 부정적인 영향을 미쳐 순위를 낮추도록 설정함으로써, 사용자에게 더 가치 있는 검색 결과를 제공할

 

3. rank_feature 검색 쿼리 예시

 

 

부연 설명

  • 이 쿼리는 sales, return_sales, rating 세 가지 필드를 고려하여 문서의 순위를 정합니다. 각 필드의 영향력은 boost 값에 의해 조정
    • sales 필드는 기본적인 영향력을 가지며, 값이 클수록 문서의 순위가 높아짐
    • return_sales 필드는 boost 값이 0.1로 낮게 설정되어 있으며, 값이 클수록 문서의 순위가 낮아짐
    • rating 필드는 boost 값이 1.4로 높게 설정되어 있어, 값이 클수록 문서의 순위에 큰 영향을 미침

 

  • 정리하면 이 쿼리를 통해 반환된 문서들은 sales, return_sales, rating 필드 값에 따라 순위가 매겨지며, rating의 영향력이 가장 크고, return_sales의 영향력은 가장 작음
    • 따라서 사용자는 더 높은 평점과 높은 판매량을 가진 문서를 우선적으로 보게 되며, 반품량이 많은 문서는 상대적으로 순위가 낮아짐

 

4. integer 필드 vs rank_feature 필드

  • Integer 필드를 직접 쓰게 될 경우 단순히 정수 값을 저장하고 검색 결과를 정렬 시 해당 값에 따라 정렬됨
  • 반면, rank_feature는 같은 숫자값 필드여도 이를  랭킹화를 하는데 복합적으로 적용 가능
    • rank_feature 필드의 값과 다른 필드들 간의 상관관계를 학습하고 이를 기반으로 랭킹화된 검색 결과를 반환 가능
    • ex) 같은 term을 가지고 있어서 텀 매칭 점수로는 같은 score를 가지는 문서라도 추가적인 rank_feature의 값을 통해 가중치를 다르게 부여 가능

 

5. rank_feature의 기능들

 

5.1 Saturation

  • 특정 값 이상에서는 더 이상 점수에 영향을 주지 않도록 제한하는 기능
  • score = S / (S + pivot)으로 계산되며 값의 범위는 [0, 1]
    • S는 필드의 값
    • pivot은 입력받는 값으로 S가 피봇보다 작으면 0.5 미만, 그렇지 않으면 0.5보다 큰 결과가 나옴
    • pivot 값이 없다면 Elasitcsearch는 모든 rank_feature 값의 대략적인 기하학적 평균과 동일한 값으로 기본값을 계산

 

 

5.2 Logarithm

  • scaling_factor 매개변수를 사용하여 정수 값을 로그 스케일링할 수 있도록 지원
  • 점수의 범위를 조정하고 상대적인 차이를 강조하거나 완화 가능
  • score = log(S + scaling_factor)

 

 

5.3 Sigmoid

  • 시그모이드 함수는 S자 형태의 곡선을 가지며 점수를 0과 1 사이 값으로 변환
  • 점수의 분포를 변환하고 점수 간의 상대적인 차이를 조절 가능
  • score = S^exp / (S^exp + pivot^exp)

 

 

5.4 Linear

  • scaling_factor 매개변수를 사용하여 선형 스케일링을 적용할 수 있음
  • 점수를 일정한 비율로 조정하는 것으로 점수에 대한 변환 없이 점수의 상대적인 차이를 유지하게 됨

 

 

6. Function Score Query

  • Elasticsearch에서 검색 결과의 score를 커스텀 함수를 기반으로 계산하고 조정할 수 있게 지원하는 쿼리
  • 커스텀하게 필터링한 문서의 집합 내에서 직접 설정한 기준으로 점수를 계산하고 싶을 때 사용

 

6.1 Function Score Query 실제 사용 사례

  • function_score 쿼리 사용 시 검색 결과에 가중치를 적용하여 특정 문서를 강조할 수 있음
    • 특정 필드의 값이 다른 필드의 값보다 중요하다고 판단될 경우 해당 필드에 대한 가중치를 높게 설정하여 해당 문서가 상위에 나타나도록 처리 가능
    • ex) 검색어로 매칭된 숙박시설 중에서 type=hotel인 것을 더 우선순위 높임

 

  • function_score 쿼리는 동적으로 점수를 계산하는 데 사용될 수도 있음
    • ex) 인기도나 최근성과 같은 요소를 고려하여 점수를 조정할 수 있으며 이를 통해 사용자의 관심도에 맞는 결과 혹은 최신 정보를 우선하여 노출 가능

 

  • function_score 쿼리를 사용하여 검색 결과에 랜덤 한 요소를 추가하여 매번 다른 결과를 보여줌으로써 다양성을 제공하거나 랜덤한 추천 결과 제공 가능
    • ex) 배달 서비스에서 매번 같은 검색어에 동일한 결과가 나올 경우 한 업체로 배달이 몰릴 수 있음

 

6.2 function_score에서 제공하는 함수들

 

6.2.1 script_score

  • 스크립트를 사용하여 별도의 점수 계산을 수행하는 기능
  • ex) 특정 필드의 값에 따라 점수를 동적으로 계산하거나 사용자 정의 함수를 통해 점수 조정 가능

 

 

6.2.2 weight

  • 각 문서에 대해 정적인 가중치를 부여하는 기능
  • 특정 문서나 필드에 더 높은 우선순위 부여 가능

 

 

6.2.3 random_score

  • 각 문서에 대해 랜덤한 점수를 부여하는 기능
  • 검색 결과의 다양성을 제공하거나 랜덤 추천 구현 가능

 

 

6.2.4 decay function

  • 거리, 시간 또는 기타 연속적인 값에 기반하여 값이 감소하거나 증가하는 점수를 계산하는 기능
  • ex) 거리가 가까운 문서에 더 높은 점수를 부여하거나 최신 문서에 가중치 부여

 

 

부연 설명

  • gauss 함수(가우시안 함수)를 사용하여 특정 날짜를 기준으로 한 시간적 가중치를 적용
  • 구체적으로는, 2024-06-19을 기준 날짜로 설정하여 그 날짜를 중심으로 하는 가우시안 함수 적용
    • 2024-06-19에서 5일(offset) 전인 2024-06-14부터 최고 점수를 받기 시작
    • 2024-06-19을 중심으로 10일(scale) 이내의 문서들은 높은 점수를 받음
    • 2024-06-19에서 10일 이후부터는 점수가 감쇠하기 시작하여, scale만큼 떨어진 문서의 점수는 기준 점수의 절반으로 감소

 

  • 이 쿼리를 통해 반환된 문서들은 @timestamp 필드 값이 2024-06-14에서 2024-06-29 사이에 있을 때 가장 높은 점수를 받게 되며, 그 이후로는 점점 점수가 낮아짐
  • 이를 통해 최근 데이터가 우선적으로 높은 점수를 받도록 하여, 검색 결과의 순위를 조정 가능

 

6.3 score_mode

  • 쿼리의 결과 점수를 계산하는 방식을 설정하는 옵션
    • default 값은 multiply: 스코어들이 곱해짐
    • sum: 스코어들의 합
    • avg: 스코어들의 평균
    • first: 첫 번째 점수를 선택하며 여러 개의 조건 중 첫 번째가 가장 중요하다고 설정할 때 사용
    • max: 최고 스코어
    • min: 최저 스코어

 

6.4 boost_mode

  • 여러 하위 쿼리의 점수를 결합하는 방식을 지정하는 옵션
    • multiply: 각 하위 쿼리의 점수를 곱해서 최종 점수 계산
    • replace: 쿼리로 인한 스코어는 무시되고 오로지 해당 function_score로 인한 스코어만 사용하겠다는 의미
    • sum: 각 하위 쿼리의 점수를 합해서 최종 점수 계산
    • avg: 하위 쿼리들의 점수의 평균
    • max: 하위 쿼리들의 최고 점수
    • min: 하위 쿼리들의 최저 점수

 

6.5 종합해서 작성한 예시 쿼리

 

 

부연 설명

  • 모든 문서가 검색됨 (match_all)
  • 각 문서의 기본 점수에 boost 값을 곱하여 초기 점수를 설정 (boost: 2)
  • functions 배열에 정의된 조건에 따라 추가적인 가중치를 적용하며 조건을 만족하는 문서의 점수는 해당 가중치로 곱해짐
    • "transmission": "automatic" 일 때 가중치 1.2
    • "condition": "excellent" 일 때 가중치 1.5
    • "condition": "like new" 일 때 가중치 2

 

  • 여러 가중치가 적용될 경우, 그 가중치를 모두 곱하여 최종 점수를 계산 (score_mode: multiply)
  • 기본 점수와 boost 값, 그리고 functions 배열 내 가중치를 모두 곱하여 최종 점수를 계산 (boost_mode: multiply)
  • 계산된 최종 점수가 min_score보다 낮은 문서는 검색 결과에서 제외됨 (min_score: 4.7)

 

참고

  • 패스트 캠퍼스 -  고성능 검색 엔진 구축으로 한 번에 끝내는 Elasticsearch
반응형

'Elastic Search' 카테고리의 다른 글

[ELK] Beats 정리  (0) 2024.06.25
[ELK] Logstash 정리  (0) 2024.06.25
[Elasticsearch] Fuzzy 쿼리  (0) 2024.06.19
[Elasticsearch] 스크립트 쿼리  (0) 2024.06.13
[Elasticsearch] 자동완성  (0) 2024.06.12