1

Solr 統合による Search API ファセット検索を使用して、評価でノードを並べ替えようとしています。すでにファイブスター評価 (ノードごとに約 9、その大規模な多軸評価システム) を設定しましたが、これらの評価にインデックスを付けることができません!

評価のファセット検索を使用できるように、これを変更する方法を誰かが理解するのを手伝ってくれますか?

それ以外の場合、投票をインデックス化できる他のモジュール (ファイブスター以外) に関する推奨事項はありますか?

ありがとうございました!

ジャスティン

4

1 に答える 1

1

まず、ファセット用の facetapi モジュールをインストールする必要があります。次に、hook_update_index で、apachesolr インデックスに評価を追加する必要があります

<?php function module_apachesolr_update_index(&$document, $node) {
    //add additional offers;
    if (count($node->field_add_offers)) {
      $field = $node->field_add_offers;
      foreach ($field as $lang => $values) {
        foreach ($values as $value) {
          if (isset($value['value'])) {
            $document->setMultiValue('sm_offers', $value['value']);
          }
        }
      }
    }
} ?>

あくまで一例ですのでご了承ください。多言語サイトと、フィールド配列のこの「und」キーの問題のために、2 つのループを実行します。ここでも、すべての評価を追加することはできませんが、たとえばノードごとに 1 つの修飾子を計算して、並べ替えに使用します (評価にその修飾子がない場合)。

3 番目に、hook_facetapi_facet_info を使用してファセットを追加します。

<?php function module_facetapi_facet_info(array $searcher_info) {
  return array(
    'sm_games_facet' => array(
      'name' => 'sm_games_facet',
      'label' => t('games'),
      'description' => t('Filter games'),
      'field' => 'sm_games',
      'field alias' => 'game',
      'query type' => 'term',
      'default widget' => 'facetapi_links',
      'allowed operators' => array(FACETAPI_OPERATOR_OR => TRUE, FACETAPI_OPERATOR_AND => TRUE),
      'default sorts' => array(
        array('display', SORT_ASC),
      ),
    )
);
} ?>

facetapi.api.php ファイルで見つけることができるファセットの詳細。

Forth - コンテンツのインデックスを再作成し、apachesolr 設定でファセットを有効にします。

よろしく、 スラバ

于 2011-09-29T09:52:20.880 に答える