public function SearchApiElasticsearchViewsHandlerFilterFulltext::options_form in Search API Elasticsearch 7
Extend the options form.
Overrides SearchApiViewsHandlerFilterFulltext::options_form
File
- includes/
views/ SearchApiElasticsearchViewsHandlerFilterFulltext.inc, line 28 - Contains SearchApiElasticsearchViewsHandlerFilterFulltext.
Class
- SearchApiElasticsearchViewsHandlerFilterFulltext
- Views filter handler class for handling fulltext fields.
Code
public function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
$analyzer_options = array();
// We only want this to work with Elasticsearch servers.
$index_name = substr($form_state['view']->base_table, 17);
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'search_api_index', '=');
$query
->propertyCondition('machine_name', $index_name, '=');
$result = $query
->execute();
$result = reset($result['search_api_index']);
$index = search_api_index_load($result->id);
$server = $index
->server();
$service_info = search_api_get_service_info();
$reflection = new ReflectionClass($service_info[$server->class]['class']);
if ($reflection
->isSubclassOf('SearchApiElasticsearchAbstractService')) {
$elasticsearch_client = new $service_info[$server->class]['class']($server);
$analysis_settings = $elasticsearch_client
->getAnalysisSettings($index);
foreach ($analysis_settings['analyzer'] as $name => $settings) {
$analyzer_options[$name] = $name;
}
// Build our form.
$form['analyzer'] = array(
'#type' => 'select',
'#title' => t('Analyzer'),
'#description' => t('The analyzer to use for this search. If none are selected, the default from the index will be used.'),
'#options' => $analyzer_options,
'#default_value' => $this->options['analyzer'],
'#empty_option' => t('Use index default'),
);
}
}