2014-05-04 3 views
1

am используя поиск api views модуль для поиска моего apache Solr Search engine. Я хотел бы иметь собственный заказ для возвращенных результатов. Я хотел бы, чтобы сначала отображались результаты jq_articles, затем книги, затем mydocuments.Drupal Search API пользовательский поиск по полю

Как я могу получить этот заказ клиента (без ASC или DESC) для моих возвращенных результатов?

Я имею в виду, мне нужно что-то вроде $ query-> orderby ('jq_articles,' books ',' mydocuments ');

Это как мой query_alter смотрит на время бытия:

<?php 
function mymodule_search_api_query_alter(SearchApiQueryInterface $query) { 
    $filters = &$query->getFilter()->getFilters(); 
    foreach ($filters as $i => $filter) { 
     $condition=""; 
     $finalfilters=&$filter->getFilters(); 
     foreach($finalfilters as $z => $singlefilter){ 
        if($singlefilter[0]=='type') { 
         $condition=$singlefilter[1]; 
         unset($finalfilters[$z]); 
        } 
     } 
    } 
      $filter = $query->createFilter('OR'); 
switch($condition) { 
      case 'journals': 
       $filter->condition('type', 'jq_articles'); 
       break; 
      case 'books': 
       $filter->condition('type', 'books'); 
       break; 
      case 'mydocuments': 
      $filter->condition('type', 'mydocuments'); 
      default: 
      $filter->condition('type', 'mydocuments'); 
      $filter->condition('type', 'books'); 
      $filter->condition('type', 'jq_articles'); 
      break; 
} 
      $query->filter($filter); 
} 
?> 

ответ

4

Вы можете сделать это, добавив следующее hook_search_api_query_alter():

$query->sort('jq_articles', 'DESC'); 

Если вы хотите отсортировать по нескольким полям, вам должен сделать следующее:

$query->sort('field1', 'DESC'); 
$query->sort('field2', 'ASC'); 
Смежные вопросы