搜索API Solr与五星(或类似)评级系统的集成(fascet和sort)

时间:2011-09-26 16:24:34

标签: drupal-7 voting drupal-fivestar

我正在尝试使用Solr集成的Search API分面搜索按评级对节点进行排序。我已经设置了五星评级(每个节点大约9个,它是一个大型多轴评级系统。)但我无法索引这些评级!

有人可以帮助我了解如何更改此内容,以便我可以使用方面搜索评分吗?

否则,是否有其他模块的建议(除了五星之外)可以将投票编入索引?

谢谢!

贾斯汀

1 个答案:

答案 0 :(得分:1)

首先你需要安装facetapi模块 - 这就是facet。 第二,在hook_update_index上,你需要为apachesolr index添加评级

<?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个循环。在这里你也不能添加所有评级,但是计算每个节点一个修饰符,它将用于排序(如果你没有评级中的那个)

第三,使用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设置中启用facet。

问候,斯拉瓦