如何通过drupal7钩子在solr中传递函数的排序参数


How to pass function in sort parameter in solr through drupal7 hooks

我想传递函数"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'));  
}

它工作得很好。:)