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