class apachesolr_views_handler_field_snippet in Apache Solr Views 6
@file provides a field handler for the snippet coming from the ApacheSolr search engine
Hierarchy
- class \apachesolr_views_handler_field_snippet extends \views_handler_field
Expanded class hierarchy of apachesolr_views_handler_field_snippet
1 string reference to 'apachesolr_views_handler_field_snippet'
- apachesolr_views_views_data in ./
apachesolr_views.views.inc - Implementation of hook_views_data().
File
- handlers/
apachesolr_views_handler_field_snippet.inc, line 8 - provides a field handler for the snippet coming from the ApacheSolr search engine
View source
class apachesolr_views_handler_field_snippet extends views_handler_field {
function option_definition() {
$options = parent::option_definition();
$options['num_snippets'] = array(
'default' => 1,
);
$options['fragsize'] = array(
'default' => 100,
);
$options['merge'] = array(
'default' => 'true',
);
$options['tag'] = array(
'default' => 'em',
);
return $options;
}
function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
$form['num_snippets'] = array(
'#title' => t('Number of snippets to return'),
'#type' => 'select',
'#options' => drupal_map_assoc(range(1, 5)),
'#default_value' => $this->options['num_snippets'],
'#description' => t('The maximum number of highlighted snippets to generate'),
);
$form['fragsize'] = array(
'#title' => t('Fragment Size'),
'#type' => 'textfield',
'#default_value' => $this->options['fragsize'],
'#description' => t('The size in characters, of fragments for highlighting'),
);
$form['merge'] = array(
'#title' => t('Merge Contiguous Fragments'),
'#type' => 'radios',
'#default_value' => $this->options['merge'],
'#options' => array(
'true' => t('Merge fragments'),
'false' => t('Do not merge fragments'),
),
'#description' => t('Collapse contiguous fragments into one fragment'),
);
$form['tag'] = array(
'#title' => t('Tag for matching words'),
'#type' => 'textfield',
'#default_value' => $this->options['tag'],
'#description' => t('HTML tag to surround the matching words in the snippet'),
);
}
function query() {
// Wierd that with ht.alternateField we can't have the snippet be the body...
$this->query
->add_solr_field('body');
$this->query
->set_param('hl.snippets', $this->options['num_snippets']);
$this->query
->set_param('hl.fragsize', $this->options['fragsize']);
$this->query
->set_param('hl.mergeContiguous', $this->options['merge']);
$this->query
->set_param('hl.simple.pre', '<' . $this->options['tag'] . '>');
$this->query
->set_param('hl.simple.post', '</' . $this->options['tag'] . '>');
}
function render($doc) {
$response = apachesolr_static_response_cache();
$hl_fl = $this->query
->get_param('hl.fl');
if (is_null($hl_fl)) {
$hl_fl = 'body';
}
$snippet = isset($response->highlighting->{$doc->id}->{$hl_fl}) ? theme('apachesolr_search_snippets', $doc, $response->highlighting->{$doc->id}->{$hl_fl}) : $doc->body;
return $snippet;
}
}