๐ง ๊ฒ์ ์ ์ ๋ถ์: explain ํ์ฉํ๊ธฐ
์ด ๋ฌธ์๋
?explain=true
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ ์ ์(BM25 ๋ฑ)์ ๊ณ์ฐ ๊ทผ๊ฑฐ๋ฅผ ํ์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์ด๋ค ๋ฌธ์๊ฐ ์ ๋์ ์ ์๋ฅผ ๋ฐ์๋์ง ์ดํดํ๊ณ , ๊ฒ์ ํ์ง์ ํฅ์์ํค๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
โ 1. explain ํ๋ผ๋ฏธํฐ๋?
๊ฒ์ API ํธ์ถ ์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ?explain=true
๋ฅผ ์ถ๊ฐํ๋ฉด,
๊ฐ ๋ฌธ์์ _score
๊ฐ ์ด๋ป๊ฒ ๊ณ์ฐ๋์๋์ง ์์ธํ ์ค๋ช
์ด ํจ๊ป ๋ฐํ๋ฉ๋๋ค.
์์ ํธ์ถ
GET /posts/_search?explain=true
{
"query": {
"match": {
"title": "์นด์นด์ค"
}
}
}
๐ 2. BM25 ์ ์ ๊ณ์ฐ ์์
BM25๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ 3๊ฐ์ง ์์๋ก ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค:
์์ | ์ค๋ช |
---|---|
TF (Term Frequency) | ๋ฌธ์ ๋ด ๊ฒ์์ด ๋ฑ์ฅ ํ์ |
IDF (Inverse Document Frequency) | ์ ์ฒด ๋ฌธ์ ์ค ํด๋น ๊ฒ์์ด๊ฐ ๋๋ฌธ ์ ๋ |
fieldNorm | ํ๋ ๊ธธ์ด์ ๋ฐ๋ฅธ ์ ๊ทํ |
๐ 3. explain ์ถ๋ ฅ ์์
"_explanation": {
"value": 1.472,
"description": "weight(title:์นด์นด์ค in 0) [PerFieldSimilarity], result of:",
"details": [
{
"value": 0.87,
"description": "score(freq=2.0), computed as boost * idf * tf from:",
"details": [
{ "value": 1.0, "description": "boost" },
{ "value": 0.92, "description": "idf, computed from docFreq" },
{ "value": 0.95, "description": "tf, term frequency" }
]
},
{
"value": 1.23,
"description": "fieldNorm based on field length"
}
]
}
boost
: ์ฟผ๋ฆฌ์์ ์ค์ ํ ๊ฐ์ค์นidf
: ์ ์ฒด ๋ฌธ์ ์ค ๋๋ฌธ ๋จ์ด์ผ์๋ก ๋์tf
: ํด๋น ๋ฌธ์์์ ์ผ๋ง๋ ์์ฃผ ๋ฑ์ฅํ๋์งfieldNorm
: ๋ฌธ์ ๊ธธ์ด ๋ณด์ ๊ฐ
๐ ๏ธ 4. ์ ์ ํ๋ ์ ํ์ฉ ์
- ํน์ ํ๋๊ฐ ๋๋ฌด ๋ง์ ํ
์คํธ๋ฅผ ํฌํจํ๋ฉด
fieldNorm
์ด ๋ฎ๊ฒ ๋์ด โ ์ ์ ๋ฎ์ idf
๊ฐ ๋ฎ์ผ๋ฉด ํํ ๋จ์ด โ ๋ค๋ฅธ ๋จ์ด์ ์กฐํฉํ๊ฑฐ๋ boost๋ก ๊ฐ์ค์น ์กฐ์ ํ์- explain์ผ๋ก ๊ฐ ์์ ๊ฐ์ ๋ณด๋ฉฐ ์์ธ ์ง๋จ ๊ฐ๋ฅ
๐งช 5. ์ค์ ํ
?explain=true
๋ ๋๋ฒ๊น ์ฉ๋๋ก๋ง ์ฌ์ฉ (์ฑ๋ฅ ์ ํ ์์)- ์ค ์๋น์ค์์๋ ์ฌ์ฉํ์ง ์๊ณ , ๋ถ์์ฉ์ผ๋ก๋ง ํธ์ถ
- Kibana ๋๋ Dev Tools์์ ์ง์ ํ ์คํธ ๊ฐ๋ฅ
โ ์์ฝ
ํญ๋ชฉ | ์ค๋ช |
---|---|
?explain=true | ๊ฒ์ ๊ฒฐ๊ณผ์ _score ๊ณ์ฐ ๊ทผ๊ฑฐ ์ถ๊ฐ |
TF | ๋ฌธ์ ๋ด ๋จ์ด ๋น๋ |
IDF | ๋จ์ด์ ํฌ๊ท๋ (์ ์ฒด ๋ฌธ์ ๊ธฐ์ค) |
fieldNorm | ํ๋ ๊ธธ์ด ๋ณด์ ๊ฐ (์งง์์๋ก ๊ฐ์ค์น ๋์) |
ํ์ฉ ๋ชฉ์ | ๋์ ์ ์์ ์ด์ ๋ถ์, ์ฟผ๋ฆฌ ๊ฐ์ ๋ฐ ํ๋ |