Несколько входов для field_value_factor в asticsearch
Я пытаюсь сформулировать запрос эластичного поиска, используя field_value_factor для взвешивания некоторых полей в документах.
{
"query": {
"match": {
"local": true
},
"function_score": {
"functions": [
{
"field_value_factor": {
"field": "title",
"factor": 1.2,
"missing": 1
}
},
{
"gauss": {
"location": {
"origin": {
"lat": 51.5,
"lon": 0.12
},
"offset": "2 Miles",
"scale": "3 Miles"
}
}
},
{
"gauss": {
"creation_time": {
"decay": 0.8,
"offset": "2d",
"scale": "48d"
}
},
"weight": 2
}
]
}
}
}
Любой вклад, как:
"field_value_factor": {
"field": [“title”,"description"],
"factor": [1.2,0.8],
"missing": [1,0]
}
не работает для обоих полей, и запрос извлекает те же документы, что и первый.
Можно ли ввести несколько терминов в поле field_value_vector?
1 ответ
Решение
Вы можете использовать несколько field_value_factor
функции, одна для каждого поля
{
"query": {
"match": {
"local": true
},
"function_score": {
"functions": [
{
"field_value_factor": {
"field": "title",
"factor": 1.2,
"missing": 1
}
},
{
"field_value_factor": {
"field": "description",
"factor": 0.8,
"missing": 0
}
},
{
"gauss": {
"location": {
"origin": {
"lat": 51.5,
"lon": 0.12
},
"offset": "2 Miles",
"scale": "3 Miles"
}
}
},
{
"gauss": {
"creation_time": {
"decay": 0.8,
"offset": "2d",
"scale": "48d"
}
},
"weight": 2
}
]
}
}
}