我想传递函数"map"在排序参数从drupal使用钩子。我的原则是在映射字段之后对列表进行排序。
我的solr服务器查询是:http://local.host: 8983/solr/文物/选择? q = 3 %,那种=地图(is_site_web_id % 2 c2 % 2 c2 % 2 c1 % 2 c0) + desc& fl =网站% 2卷% 2 clabel % 2 cis_site_web_id& wt = json&缩进= 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%2C2%2C2%2C1%2C0)', '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中打印函数"search"的参数时,我得到了排序:[sort] => is_site_web_id asc)
我想在drupal7中使用Hooks应用这个条件:地图(is_site_web_id 2 2 1 0)
我在我的模块函数中应用了以下代码:
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'));
}
它工作得很好。:)