节点索引中的词汇表类型构面

时间:2013-07-11 13:21:50

标签: drupal solr drupal-7 faceted-search facet

问题/动机

我正在使用Search API与SOLR Search API集成。目前我有一个节点索引显示内容类型列表和一个附加到它的分面块(类别)。我的想法是创建另一个Faceted Block,它将通过 Listing title的开头字母进行过滤。

我认为我已尝试过所有内容(然后可能不会......),除了创建新的索引字段,将标题修剪为第一个字母,然后使用它来过滤标题。

1 个答案:

答案 0 :(得分:3)

这解决了我的问题。它添加了另一个索引字段,您可以创建它的facet。

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',
      ),
    );
  }

}