Как повысить конкретные документы в Elasticsearch с пользовательским рангом

Я использую Elasticsearch для поиска предметов. Предметы имеют настраиваемое поле ранга, которое используется для сортировки. Пользователи могут пометить эти элементы как избранные.

Я хотел бы повысить, чтобы персонализировать результаты поиска, показывая элементы сверху, которые были отмечены как избранные этими пользователями (повышение).

В документации Elasticsearch есть несколько полезных страниц:

Но я бы хотел использовать свое поле для сортировки, и до сих пор не смог объединить его с 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',
    ],
]

Кто-нибудь знает решение для этого? Как повысить определенные предметы, сохраняя при этом индивидуальный порядок? Спасибо!

0 ответов

Другие вопросы по тегам