#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'));
}
И он работает нормально. 🙂