Как передать функцию в параметре сортировки в solr через хуки drupal7

#php #apache #solr #drupal-7

#php #apache #solr #drupal-7

Вопрос:

Я хочу передать функцию «map» в параметре сортировки из drupal с помощью хуков. Моя цель — отсортировать список после сопоставления полей.

Мой запрос к серверу solr таков: http://local.host:8983/solr/collection1/select?q=:amp;sort=map(is_site_web_id,2,2,1,0) descamp;fl=site,url,label,is_site_web_idamp;wt=jsonamp;indent=true

Он отлично работает на сервере solr.

Я третий ниже кода в Drupal7:

 function my_solr_module_apachesolr_index_document_build_node(ApacheSolrDocument $document, $entity, $env_id) {
    $document->setField('is_site_web_id', 1);

}

function my_solr_module_apachesolr_query_alter($query) {
    $query->addParam('fl', array('is_site_web_id'));
    //$query->addParam('bf', array('freshness' =>'map(is_site_web_id,2,2,1,0)'));
    $query->setSolrSort('is_site_web_id', 'asc');
    //$query->setSolrSort('map(is_site_web_id,2,2,1,0)', 'desc');
}

function  my_solr_module_apachesolr_query_prepare($query){
    $query->setAvailableSort('is_site_web_id', array('title' => t('Site Web ID'),'default' => 'asc',));
    //$query->setAvailableSort('is_site_web_id', "map(is_site_web_id,2,2,1,0)");
}
 

Когда я печатаю параметры из функции «поиск» в Solr_Base_Query.php , Я становлюсь вроде:
[sort] => is_site_web_id asc )

Я хочу применить это условие при сортировке в drupal7 с помощью крючков:
map(is_site_web_id,2,2,1,0)

Ответ №1:

Я применил приведенный ниже код в своей функции модуля:

 function my_solr_module_apachesolr_query_alter($query) {
    $query->addParam('fl', array('is_site_web_id'));
    $query->addParam('sort', array('is_site_web_id' =>'map(is_site_web_id,2,2,1,0) desc'));  
}
 

И он работает нормально. 🙂