我正在尝试使用带有 Solr 集成的 Search API 分面搜索按评级对节点进行排序。我已经设置了五星级评级(每个节点大约 9 个,它是一个大型的多轴评级系统。)但我无法索引这些评级!
有人可以帮助我了解如何更改此设置,以便我可以使用方面搜索来进行评分吗?
否则,是否有任何关于其他模块(除了五星级)的建议可以让投票被索引?
谢谢!
贾斯汀
我正在尝试使用带有 Solr 集成的 Search API 分面搜索按评级对节点进行排序。我已经设置了五星级评级(每个节点大约 9 个,它是一个大型的多轴评级系统。)但我无法索引这些评级!
有人可以帮助我了解如何更改此设置,以便我可以使用方面搜索来进行评分吗?
否则,是否有任何关于其他模块(除了五星级)的建议可以让投票被索引?
谢谢!
贾斯汀
首先你需要安装 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 设置中启用方面。
问候, 斯拉瓦