์ด ๋ฌธ์๋ function_score ์ฟผ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๊ฒ์ ๊ฒฐ๊ณผ์ relevance score๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๋ ์ค์ต ์์ ์
๋๋ค.
ํด๋ฆญ์, ์ข์์, ์ต์ ์ฑ ๋ฑ์ ๋ฐ์ํ ๋ณตํฉ ์ ์ ๊ณ์ฐ ์ ๋ต์ ์ค๋ช
ํฉ๋๋ค.
1. โ๏ธ function_score ๊ธฐ๋ณธ ๊ตฌ์กฐ
function_score ์ฟผ๋ฆฌ๋ ๊ฒ์ ์ ์๋ฅผ ์์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
{
"query": {
"function_score": {
"query": { "match": { "title": "์นด์นด์ค" } },
"functions": [
...
],
"score_mode": "sum",
"boost_mode": "multiply"
}
}
}
query: ๊ธฐ๋ณธ ๊ฒ์ ์กฐ๊ฑดfunctions: ๊ฐ์ค์น๋ decay ํจ์ ๋ฑ ์ ์ฉscore_mode: ์ฌ๋ฌ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ํฉ์ฐ, ํ๊ท ๋ฑ์ผ๋ก ๊ฒฐํฉboost_mode: ๊ธฐ์กด ์ ์์ ํจ์ ์ ์๋ฅผ ์ด๋ป๊ฒ ํฉ์น ์ง ๊ฒฐ์
2. ๐ก likes, clicks ๊ธฐ๋ฐ ๊ฐ์ค์น ์์
"functions": [
{
"field_value_factor": {
"field": "likes",
"factor": 1.5,
"modifier": "sqrt",
"missing": 0
}
},
{
"field_value_factor": {
"field": "clicks",
"factor": 0.5,
"modifier": "log1p",
"missing": 1
}
}
]
likes: ์ ๊ณฑ๊ทผ ๊ธฐ๋ฐ ์ฆ๊ฐclicks: ๋ก๊ทธ ๊ธฐ๋ฐ ์๋งํ ์ฆ๊ฐ
3. ๐ createdAt ๊ธฐ๋ฐ ์ต์ ๋ฌธ์ ์ ํธ (decay ํจ์)
{
"gauss": {
"createdAt": {
"origin": "now",
"scale": "10d",
"decay": 0.5
}
}
}
- ์ต์ ๋ฌธ์์ผ์๋ก ์ ์๊ฐ ๋๊ณ , ์ค๋๋ ์๋ก ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์
scale: ๊ฐ์๊ฐ ์์๋๋ ๊ฑฐ๋ฆฌdecay: ๊ฐ์ ๋น์จ
4. โ๏ธ boost_mode์ score_mode ์กฐํฉ
| score_mode | ์๋ฏธ |
|---|
| sum | ํจ์ ๊ฒฐ๊ณผ ๋ชจ๋ ๋ํจ |
| avg | ํ๊ท ๊ฐ ์ฌ์ฉ |
| max | ๊ฐ์ฅ ํฐ ๊ฐ๋ง ์ฌ์ฉ |
| multiply | ๋ชจ๋ ๊ณฑํจ (๊ฐ์ด 0์ด๋ฉด ์ ์ฒด ์ ์ 0๋จ) |
| first | ์ฒซ ๋ฒ์งธ ํจ์๋ง ์ฌ์ฉ |
| boost_mode | ๊ธฐ์กด _score์์ ๊ฒฐํฉ ๋ฐฉ์ |
|---|
| multiply | _score * function_score |
| sum | _score + function_score |
| replace | _score ๋ฌด์ํ๊ณ function ์ฌ์ฉ |
| avg | ํ๊ท ์ฌ์ฉ |
| max/min | ํฐ ๊ฐ ๋๋ ์์ ๊ฐ ์ฌ์ฉ |
โ
์ ์ฒด ์์ ์ฟผ๋ฆฌ
{
"query": {
"function_score": {
"query": {
"match": {
"title": "์นด์นด์ค"
}
},
"functions": [
{
"field_value_factor": {
"field": "likes",
"factor": 1.2,
"modifier": "sqrt",
"missing": 0
}
},
{
"field_value_factor": {
"field": "clicks",
"factor": 0.8,
"modifier": "log1p",
"missing": 1
}
},
{
"gauss": {
"createdAt": {
"origin": "now",
"scale": "15d",
"decay": 0.4
}
}
}
],
"score_mode": "sum",
"boost_mode": "multiply"
}
}
}
๐ ์์ฝ
| ์์ | ์ค๋ช
|
|---|
function_score | ์ ์ ๊ณ์ฐ ๋ฐฉ์ ์ปค์คํฐ๋ง์ด์ง |
field_value_factor | ์ซ์ ํ๋ ๊ธฐ๋ฐ ๊ฐ์ค์น ๋ฐ์ |
gauss | ์ต์ ์ฑ ์ ์ ๋ฐ์ (decay) |
score_mode | ์ฌ๋ฌ function ๊ฒฐํฉ ๋ฐฉ์ (sum, avg ๋ฑ) |
boost_mode | ๊ธฐ์กด ์ ์์ ๊ฒฐํฉ ๋ฐฉ์ (multiply, replace ๋ฑ) |