similarity 매핑 파라미터
similarity 매핑 파라미터
similarity 매핑 파라미터를 사용하면 검색 중에 text 필드의 관련성 점수(relevance score)가 계산되는 방식을 커스터마이즈할 수 있어요. 이 파라미터는 매칭된 문서를 순위 매기는 데 사용되는 스코어링 알고리즘을 정의하며, 검색 응답에서 결과가 정렬되는 방식에 직접적인 영향을 줘요.
출처: 문서
본문
지원되는 similarity 유형
OpenSearch는 필드 매핑에 대해 두 가지 유형의 similarity를 지원해요:
내장(built-in) similarity (바로 사용 가능):
- BM25 (기본값): 현대적인 확률적 랭킹 모델로, 용어 빈도(term frequency), 문서 길이(document length), 역문서 빈도(inverse document frequency)의 균형을 맞춰요.
- boolean: 상수 점수(1 또는 0)를 반환하므로, 관련성보다 매칭 여부만 중요할 때 사용해야 해요.
커스텀 similarity (먼저 인덱스 설정에 정의해야 함):
- DFR, DFI, IB, LM Dirichlet, LM Jelinek Mercer, scripted similarity: 고급 similarity 알고리즘으로, 필드 매핑에서 이름으로 참조하기 전에 인덱스 설정에서 구성해야 해요.
필드에 커스텀 similarity 설정하기
다음 요청은 모든 매칭에 동일한 점수를 부여하는 boolean similarity를 사용하는 title 필드가 있는 products 인덱스를 생성해요:
PUT /products
{
"mappings": {
"properties": {
"title": {
"type": "text",
"similarity": "boolean"
}
}
}
}
문서 인덱싱하기
샘플 문서를 인덱스하려면 다음 명령을 사용해요:
PUT /products/_doc/1
{
"title": "Compact Wireless Mouse"
}
쿼리하고 스코어링 영향 확인하기
title 필드로 검색하려면 다음 명령을 사용해요:
POST /products/_search
{
"query": {
"match": {
"title": "wireless mouse"
}
}
}
응답의 _score 필드에 반환된 점수를 확인할 수 있어요:
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 2,
"hits": [
{
"_index": "products",
"_id": "1",
"_score": 2,
"_source": {
"title": "Compact Wireless Mouse"
}
}
]
}
}
관련 문서
- Similarity