์ด ๋ฌธ์๋ 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 ๋ฑ) |