Как повысить конкретные документы в Elasticsearch с пользовательским рангом
Я использую Elasticsearch для поиска предметов. Предметы имеют настраиваемое поле ранга, которое используется для сортировки. Пользователи могут пометить эти элементы как избранные.
Я хотел бы повысить, чтобы персонализировать результаты поиска, показывая элементы сверху, которые были отмечены как избранные этими пользователями (повышение).
В документации Elasticsearch есть несколько полезных страниц:
- https://www.elastic.co/guide/en/elasticsearch/guide/current/function-score-filters.html и
- https://www.elastic.co/guide/en/elasticsearch/guide/current/function-score-filters.html
Но я бы хотел использовать свое поле для сортировки, и до сих пор не смог объединить его с function_score
,
Пока мой запрос (упрощенный) выглядит так:
'sort' => ['rank' => ['order' => 'desc']],
'query' => [
'function_score' => [
'query' => ['bool' => [
'must' => [
'multi_match' => [
[
'query' => 'search term',
'type' => 'cross_fields',
'fields' => ['title' , 'description'],
'operator' => 'and',
]
],
],
'filter' => [
['active' => 1]
]
]]
'functions' => [
[
'filter' => ['terms' => ['id' => ['favorite_id1', 'favorite_id2']]],
'weight' => 1000,
]
],
'score_mode' => 'sum',
],
]
Кто-нибудь знает решение для этого? Как повысить определенные предметы, сохраняя при этом индивидуальный порядок? Спасибо!