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

Drupal 7 搜索API Solr与fivestar(或类似)评级系统的集成(fascet和sort),drupal-7,voting,drupal-fivestar,Drupal 7,Voting,Drupal Fivestar,我正在尝试使用搜索API Faced Search和Solr集成对节点进行分级。我已经设置了fivestar评级(每个节点大约9个,这是一个大型多轴评级系统),但我无法为这些评级编制索引 有人能帮助我理解如何改变这一点,以便我可以使用方面搜索来获得评级吗 否则,是否有任何关于其他模块(fivestar除外)的建议,允许对投票进行索引 谢谢大家! Justin首先,您需要安装FaceAPI模块-这是用于Facet的。 其次,在hook_update_索引上,您需要将评级添加到apachesolr索

我正在尝试使用搜索API Faced Search和Solr集成对节点进行分级。我已经设置了fivestar评级(每个节点大约9个,这是一个大型多轴评级系统),但我无法为这些评级编制索引

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

否则,是否有任何关于其他模块(fivestar除外)的建议,允许对投票进行索引

谢谢大家!


Justin

首先,您需要安装FaceAPI模块-这是用于Facet的。 其次,在hook_update_索引上,您需要将评级添加到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\u facetapi\u facet\u info添加facet

<?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的更多信息,请访问facetapi.api.php文件

Forth-在apachesolr设置中重新索引内容并启用方面


关于这一点,Slava

首先您需要安装facetapi模块-这是用于Facet的。 其次,在hook_update_索引上,您需要将评级添加到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\u facetapi\u facet\u info添加facet

<?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的更多信息,请访问facetapi.api.php文件

Forth-在apachesolr设置中重新索引内容并启用方面


关于这一点,Slava

这是否也适用于Solar API和SOLR search?我没有使用apache搜索集成。但是我想这可能会决定我是否走这条路。这是模块的名称,它提供了solr与Drupal的集成。它还提供schema.xmk和solrconfig,因此drupal可以与Solr通信。这不是ApacheSearch,它只是以这种方式调用的。vs。这是drupal中的两个不同模块,所以我认为它不起作用。这对Solar API和SOLR search也起作用吗?我没有使用apache搜索集成。但是我想这可能会决定我是否走这条路。这是模块的名称,它提供了solr与Drupal的集成。它还提供schema.xmk和solrconfig,因此drupal可以与Solr通信。这不是ApacheSearch,它只是以这种方式调用的。vs。这是drupal中的两个不同模块,所以我认为它不会工作。