Интеграция API поиска Solr с пятизвездочной (или аналогичной) системой рейтинга (fastcet и sort) - PullRequest
1 голос
/ 26 сентября 2011

Я пытаюсь отсортировать узлы по рейтингу с помощью многогранного поиска Search API с интеграцией Solr. Я уже установил пятизвездочные рейтинги (около 9 на узел, это большая многоосевая рейтинговая система), но я не могу проиндексировать эти рейтинги!

Может ли кто-нибудь помочь мне понять, как это изменить, чтобы я мог использовать фасетный поиск для оценок?

В противном случае, есть ли какие-либо рекомендации по другим модулям (кроме Fivestar), которые позволили бы индексировать голоса?

Спасибо!

Justin

1 Ответ

1 голос
/ 29 сентября 2011

сначала вам нужно установить модуль 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']);
          }
        }
      }
    }
} ?>

Обратите внимание, это всего лишь пример.Я запускаю 2 цикла из-за многоязычного сайта и проблемы с этим ключом «und» в массиве полей.Здесь также вы не можете добавить все рейтинги, но рассчитать, например, один модификатор на узел, который будет использоваться для сортировки (если у вас его нет в рейтингах)

В-третьих, добавьте фасеты с помощью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.

С уважением, Слава

...