С search_api_solr, как я могу применить значительное усиление на основе поля при использовании Solr 6.x?


7

Я использую бэкэнд solr для search_api на сайте drupal 8.

Я добавил значение поля ссылки на термин таксономии ( field_promoted_search) в индекс.

Если элемент контента имеет field_promoted_searchзначение, соответствующее поисковому запросу, я бы хотел, чтобы он получил значительное повышение (например, ^ 1000), подтолкнув его к началу результатов поиска.

Добавление высокого значения «boost» admin/config/search/search-api/index/content/fieldsработало, как и ожидалось, когда сервер использовал solr <6, но после перехода на 6.1.0 это не работает должным образом. Это может быть потому , что search_api_solr / солярий использует мультипликативный импульс , а не добавки . Это не кажется мне таким полезным, так как это увеличивает релевантность, достигнутую другими областями, а не исключительно привилегиями field_promoted_search, хотя я не уверен в этом аспекте.

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

$keys = $query->getKeys();
unset($keys['#conjunction']);
// Boost results where search term matches promoted search field.
$boost_keys = [];
$boost_value = 1000;
foreach ($keys as $key) {
  $boost_keys[] = '"' . $key . '"^' . $boost_value;
}
$solarium_query->getEDisMax()->setBoostQuery('ss_promoted_search:' . implode(' OR ', $boost_keys));

Когда я пытаюсь использовать вместо этого функцию повышения , я получаю сообщение об ошибке от Solr, и запрос не запускается (я пробовал несколько функций).

// Format is: "funcA(arg1,arg2)^1.2 funcB(arg3,arg4)^2.2"
$solarium_query->getEDisMax()->setBoostFunctions("ord(ss_promoted_search,1)^1000");

Любой совет высоко ценится.


Моя ссылка на методы аддитивного и мультипликативного буста - эта очень полезная статья .

Ответы:


-2

Ни одна из функций API, предоставляемых Search API и Search API Solr Drupal, не работает должным образом. Вы можете проверить документы в солярии или вернуться к Solr 5 или Solr 4. Улучшает работу с Solr 5.x. Индексируемый тип данных также важен. Попробуйте проиндексировать его как полнотекстовое поле.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.