web-dev-qa-db-ja.com

apachesolrでデフォルトのソートをどのように変更しますか?

私はこれを数日間理解しようと試みており、私は近くにいるように感じますが、まだ葉巻はありません。現在作成中のサイトでApache solrを検索して、「作成済み」と「スコア」の2つの種類があるようにする必要があります。デフォルトの検索ソートはスコアですが、作成済みに変更する必要があります。

私はデフォルト自体を変更するところまで持っていますが、変更は無条件に追加されるので、明らかにスコアを超えて発生します。 argを使用するためにすべてのURLを再構築する必要がありますか、それともより簡単な方法はありますか?これが私のコードです:

注:いくつかのフィルターを削除するコードがありますが、それは問題とは関係ありません。念のために入れました。

   function myhook_apachesolr_prepare_query(&$query, &$params) {
     // Remove sorts
     $query->remove_available_sort('type');
     $query->remove_available_sort('sort_title');
     $query->remove_available_sort('sort_name');
     // Rename/Reorder sorts
     $query->remove_available_sort('created');
     $query->remove_available_sort('score');
     $query->set_available_sort('created', array('title' => t('Most Recent'), 'default' =>     'desc'));
     $query->set_available_sort('score', array('title' => t('Most Relevant'), 'default' => 'asc'));

     // Change the default sort to by date
     $query->set_solrsort('created', 'desc');
   }
6
bronzehedwick

以下のように、hook_apachesolr_query_alter()を実装して、新しいソート基準を追加できます。

/** 
 * implements hook_apachesolr_query_alter()。
 */
 function my_module_apachesolr_query_alter($ query){
 $ query-> addParam( ' sort '、' ss_date_field asc '); 
} 
1
Safallia Milins

並べ替えオプションを使用する方法は、並べ替えオプションブロックを公開することです。あなたが持っている場合、それはあなたのために正しいリンクを生成します-あなたはそう考える以外に何もする必要はありません

<?php
// solrsort is the query parameter the block uses
if (!isset($_GET['solrsort']) || empty($_GET['solrsort'])) { 
  $query->set_solrsort('created', 'desc');
}
?>
0
kekkis

私は次のようにして6でそれを行うことができました:

<?php

function MYMODULE_apachesolr_prepare_query($query, $caller) {

  $query->remove_available_sort('sort_name');
  $query->set_available_sort('changed', array('title' => t('Date'), 'default' => 'desc'));

}
?>

詳細については、このd.orgページを参照してください。 http://drupal.org/node/715276

0
Drupac