Вопрос по sorting – Повышение булевых полей в Solr

8

Можно ли увеличить булевы поля в Solr, чтобы они получали более высокий балл?

У нас есть индекс, который выглядит примерно так:

  • document_id
  • title
  • description
  • keywords
  • is_reviewed

При поиске документы, которые были просмотрены (т. Е. Is_reviewed = true), должны быть взвешены больше, чем те, которые еще не были, а не исключать их полностью.

С помощьюis_review:true^100 кажется, не работает, и исключает непросмотренные элементы, а не просто дает им более низкий вес. Если есть другой путь, это может быть достигнуто? Спасибо!

Ваш Ответ

2   ответа
4
Drupal

Сначала найдите имя вашего поля в браузере схемы по адресу /solr/admin/schema.jsp

Затем, в зависимости от используемого вами модуля, попробуйте следующие примеры:

Apachesolr module

Пример кода:

/**
 * Implements hook_apachesolr_query_alter().
 */
function hook_apachesolr_query_alter(DrupalSolrQueryInterface $query) {
  $query->addParam('bq', array('is_review' =>
    '(is_review:true^100 OR is_review:false^0)'
  ));
}
Search Solr API module

Пример кода:

/**
 * Implements hook_search_api_solr_query_alter().
 */
function hook_search_api_solr_query_alter(&$call_args, SearchApiQueryInterface $query) {
  $call_args['params']['bq'][] = '(is_review:true^100 OR is_review:false^0)';
}
9

предназначенную для этого вида использования. Например, анализатор запросов dismax имеетфорсированный запросbq что позволяет повысить документы, которые соответствуют запросу, добавив его предложения к исходному запросу. Также естьфункция повышенияbf что позволяет умножать баллы на результат функции. Например, используяis_review как этоbf параметр,

the score of every document whose is_review field is undefined will be multiplied by 0. the score of every document so that is_review=false will be multiplied by one. the score of every documentso that is_review=true will be multiplied by two.

is_review:true^100 не должны исключать непроверенные элементы, если вы не используетеAND какоператор запроса по умолчанию, В этом случае вы можете попробовать заменитьis_review:true^100 от(is_review:true^100 OR is_review:false^0).

Если вы заинтересованы в улучшении функции парсера запросов dismax, но хотите использовать парсер запросов по умолчанию, вы можете использоватьулучшенный анализатор запросов что позволит вам умножить оценки любого запроса с любой функцией.

Error: User Rate Limit Exceeded Mun
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Mun
Error: User Rate Limit Exceeded Mun
Error: User Rate Limit Exceeded Mun

Похожие вопросы