首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Search API Solr与fivestar (或类似)评级系统(fascet和sort)集成

Search API Solr与fivestar (或类似)评级系统(fascet和sort)集成
EN

Stack Overflow用户
提问于 2011-09-27 00:24:34
回答 1查看 1.4K关注 0票数 1

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

有人能帮我理解如何改变这一点,这样我就可以使用方面搜索来获得评级了吗?

否则,有没有关于其他模块的建议(除了fivestar),可以让投票被编入索引?

谢谢!

贾斯汀

EN

回答 1

Stack Overflow用户

发布于 2011-09-29 17:52:21

首先,你需要安装facetapi模块--这是用于facets的。其次,在hook_update_index上,您需要将评级添加到apachesolr索引

代码语言:javascript
复制
<?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添加facet

代码语言:javascript
复制
<?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。

致敬,Slava

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7558132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档