protected function SearchApiSolrMultilingualManagedSchemaBackend::createSolrMultilingualFieldType in Search API Multilingual Solr Search 8
Creates and deploys a missing Solr Field Type if the server supports it.
Parameters
string $solr_field_type_name: The name of the Solr Field Type.
Overrides AbstractSearchApiSolrMultilingualBackend::createSolrMultilingualFieldType
File
- src/
Plugin/ search_api/ backend/ SearchApiSolrMultilingualManagedSchemaBackend.php, line 54
Class
- SearchApiSolrMultilingualManagedSchemaBackend
- Plugin annotation @SearchApiBackend( id = "search_api_solr_multilingual_managed_schema", label = @Translation("Multilingual Solr Managed Schema (Experimental, don't use in production)."), description = @Translation("Index items using an Solr…
Namespace
Drupal\search_api_solr_multilingual\Plugin\search_api\backendCode
protected function createSolrMultilingualFieldType($solr_field_type_name) {
// @todo replace the hardcoded version extension.
$field_type_name = 'm_' . Utility::decodeSolrName($solr_field_type_name) . '_5_2_0';
// Get the field type definition from Drupal.
/** @var \Drupal\search_api_solr_multilingual\Entity\SolrFieldType $field_type_entity */
$field_type_entity = SolrFieldType::load($field_type_name);
if (!$field_type_entity) {
throw new SearchApiSolrMultilingualException("There's no field type {$field_type_name}.");
}
$field_type_definition = $field_type_entity
->getFieldType();
$field_type_definition['name'] = $solr_field_type_name;
// Send the config to Solr.
$command_json = '{ "add-field-type": ' . Json::encode($field_type_definition) . '}';
$command_json = str_replace('"' . $field_type_name . '"', '"' . $solr_field_type_name . '"', $command_json);
try {
$this
->solrHelper()
->coreRestPost('schema', $command_json);
} catch (SearchApiSolrMultilingualException $e) {
watchdog_exception('solr', $e);
return FALSE;
}
return TRUE;
}