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

第三,使用 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 回答