ApacheSolr検索モジュールでDrupal 6を使用しています。
私のWebサイトでは、すべての訪問者が「探していたものは見つかりましたか?」という質問に「はい」または「いいえ」で回答するノードにフラグを付けることができます。これらの回答に基づいて、個別のDBテーブルに格納されている各ノードのカスタムランキングスコアを計算します。
次に、Solrで検索結果をソート/ブーストするときにこのスコアを含めて、関連性/スコアが最も高いノードが上位に表示されるようにします。
Hook_apachesolr_prepare_query()でそれを達成できますか?
すべての提案は大歓迎です:)
スコアを並べ替えオプションとして提供するには、それをprepare_queryフックに追加します。
function mymodule_apachesolr_prepare_query(&$query, &$params, $caller) {
$query->set_available_sort('field_score', array('title' => t('Score'), 'default' => 'desc'));
}
それによってブーストするには、次のいずれかを行う必要があります。
[サイトの設定]-> [Apachesolr]-> [検索]フィールドに移動し、スコアフィールドが表示される場合は、他のすべてのフィールドよりも大きな値を指定して、最も関連性の高いものにします。
フィールドが表示されない(タイプが表示されない場合がある)か、より詳細な制御が必要な場合(すべてのクエリでブースト値を計算するなど)、次のようにmodify_queryフックにブーストを追加できます:$params['qf'][] = 'field_score^10';
。