问题/动机
我正在使用带有 SOLR 搜索 API 集成的搜索 API。目前我有一个显示内容类型列表的节点索引和一个附加到它的多面块(类别)。我的想法是创建另一个分面块,它将通过列表标题的起始字母进行过滤。
我认为除了创建新的索引字段,将标题修剪为第一个字母然后使用它来过滤标题之外,我已经尝试了所有方法(然后可能又没有......)。
我正在使用带有 SOLR 搜索 API 集成的搜索 API。目前我有一个显示内容类型列表的节点索引和一个附加到它的多面块(类别)。我的想法是创建另一个分面块,它将通过列表标题的起始字母进行过滤。
我认为除了创建新的索引字段,将标题修剪为第一个字母然后使用它来过滤标题之外,我已经尝试了所有方法(然后可能又没有......)。
这解决了我的问题。它将另一个字段添加到索引中,您可以从中创建方面。
function wtc_glossary_search_api_alter_callback_info() {
$callbacks['wtc_glossary_alter_add_first_letter_title'] = array(
'name' => t('First letter of listing title'),
'description' => t("This module provides first letter of title for glossary view."),
'class' => 'WtcAlterAddFirstLetter',
);
return $callbacks;
}
/**
* Search API data alteration callback that adds the first letter of title for glossary mode
*/
class WtcAlterAddFirstLetter extends SearchApiAbstractAlterCallback {
public function alterItems(array &$items) {
foreach ($items as $id => &$item) {
if (!isset($item->FIELD_YOU_NEED)) {
$item->search_api_title_first_letter = NULL;
continue;
}
$item->search_api_title_first_letter = substr($item->FIELD_YOU_NEED,0,1);
}
}
public function propertyInfo() {
return array(
'search_api_title_first_letter' => array(
'label' => t('First Letter of FIELD_YOU_NEED'),
'description' => t('For for listings in glossary mode.'),
'type' => 'text',
),
);
}
}