Я пытаюсь добавить ускорение к запросу API поиска Solr, когда поле имеет определенное значение, например. когда его nid = 123. Глядя на Документы Solr версии 8.7 для повышения (моя версия сервера solr), это выглядит довольно просто. Мне просто нужно добавить параметр bq, например:
бк=нид:123^10
Когда я захожу в пользовательский интерфейс администратора моего сервера Solr и добавляю туда запрос - сначала проверяю флажок парсера edismax, а затем добавляю нид:123^10
в поле bq — я вижу результаты, в которых мой узел с nid находится вверху списка (как я и ожидал) со всеми остальными результатами после него. Если я удалю эту опцию, мой узел с nid 123 больше не будет вверху (как я и ожидал).
search_api_solr модуль предоставляет хук для изменения запросов, hook_search_api_solr_query_alter(), где я могу добавить свой boost. (Примечание: я использовал этот хук в прошлом, чтобы повысить результаты на основе даты, в основном, как описано в этом комментарий.)
Насколько я понимаю, я должен иметь возможность реализовать что-то вроде:
function MY_MODULE_search_api_solr_query_alter(\Solarium\Core\Query\QueryInterface $solarium_query, \Drupal\search_api\Query\QueryInterface $query) {
$solarium_query->addParam('bq', 'nid:123^10');
}
Однако это не влияет на оценки релевантности моих результатов (я печатаю оценку релевантности в своем представлении, и мой узел с nid 123 имеет одинаковую оценку независимо от того, добавляю я этот параметр или нет), а также, как и ожидалось, на порядок результаты, достижения.
Что мне здесь не хватает?
Информация о версии:
- Ядро Друпала: 9.1.10
- API поиска: 8.x-1.19
- Решение API поиска: 4.1.12
- Солр-сервер: 8.7.0
p.s. мой ключ поля nid на самом деле its_nid
в индексе, но я просто использовал нид
в этом вопросе для удобства чтения.