diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 3db5bbd..cfa46b1 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -2615,7 +2615,7 @@ function node_page_view(Node $node) {
  * Implements hook_update_index().
  */
 function node_update_index() {
-  $limit = (int)variable_get('search_cron_limit', 100);
+  $limit = (int) config('search.settings')->get('cron_limit');
 
   $result = db_query_range("SELECT n.nid FROM {node} n LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid WHERE d.sid IS NULL OR d.reindex <> 0 ORDER BY d.reindex ASC, n.nid ASC", 0, $limit, array(), array('target' => 'slave'));
   $nids = $result->fetchCol();
diff --git a/core/modules/search/config/search.settings.yml b/core/modules/search/config/search.settings.yml
new file mode 100644
index 0000000..f58f4cd
--- /dev/null
+++ b/core/modules/search/config/search.settings.yml
@@ -0,0 +1,21 @@
+minimum_word_size: 3
+overlap_cjk: 1
+cron_limit: 100
+tag_weights:
+    h1: 25
+    h2: 18
+    h3: 15
+    h4: 14
+    h5: 9
+    h6: 6
+    u: 3
+    b: 3
+    i: 3
+    strong: 3
+    em: 3
+    a: 10
+active_modules:
+    node: node
+    user: user
+and_or_limit: 7
+default_module: 'node'
diff --git a/core/modules/search/lib/Drupal/search/SearchQuery.php b/core/modules/search/lib/Drupal/search/SearchQuery.php
index 95103a6..b0d7563 100644
--- a/core/modules/search/lib/Drupal/search/SearchQuery.php
+++ b/core/modules/search/lib/Drupal/search/SearchQuery.php
@@ -203,7 +203,7 @@ class SearchQuery extends SelectExtender {
     // Classify tokens.
     $or = FALSE;
     $warning = '';
-    $limit_combinations = variable_get('search_and_or_limit', 7);
+    $limit_combinations = config('search.settings')->get('and_or_limit');
     // The first search expression does not count as AND.
     $and_count = -1;
     $or_count = 0;
@@ -326,7 +326,7 @@ class SearchQuery extends SelectExtender {
     $split = explode(' ', $word);
     foreach ($split as $s) {
       $num = is_numeric($s);
-      if ($num || drupal_strlen($s) >= variable_get('minimum_word_size', 3)) {
+      if ($num || drupal_strlen($s) >= config('search.settings')->get('minimum_word_size')) {
         if (!isset($this->words[$s])) {
           $this->words[$s] = $s;
           $num_new_scores++;
@@ -352,11 +352,11 @@ class SearchQuery extends SelectExtender {
     $this->parseSearchExpression();
 
     if (count($this->words) == 0) {
-      form_set_error('keys', format_plural(variable_get('minimum_word_size', 3), 'You must include at least one positive keyword with 1 character or more.', 'You must include at least one positive keyword with @count characters or more.'));
+      form_set_error('keys', format_plural(config('search.settings')->get('minimum_word_size'), 'You must include at least one positive keyword with 1 character or more.', 'You must include at least one positive keyword with @count characters or more.'));
       return FALSE;
     }
     if ($this->expressionsIgnored) {
-      drupal_set_message(t('Your search used too many AND/OR expressions. Only the first @count terms were included in this search.', array('@count' => variable_get('search_and_or_limit', 7))), 'warning');
+      drupal_set_message(t('Your search used too many AND/OR expressions. Only the first @count terms were included in this search.', array('@count' => config('search.settings')->get('and_or_limit'))), 'warning');
     }
     $this->executedFirstPass = TRUE;
 
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php
index fe9ef10..2cd9847 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php
@@ -112,9 +112,9 @@ class SearchConfigSettingsFormTest extends SearchTestBase {
       $info = $module_info[$module];
       $edit = array();
       foreach ($modules as $other) {
-        $edit['search_active_modules[' . $other . ']'] = (($other == $module) ? $module : FALSE);
+        $edit['active_modules[' . $other . ']'] = (($other == $module) ? $module : FALSE);
       }
-      $edit['search_default_module'] = $module;
+      $edit['default_module'] = $module;
       $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
 
       // Run a search from the correct search URL.
@@ -151,9 +151,9 @@ class SearchConfigSettingsFormTest extends SearchTestBase {
     // page or run search, all modules should be shown.
     $edit = array();
     foreach ($modules as $module) {
-      $edit['search_active_modules[' . $module . ']'] = $module;
+      $edit['active_modules[' . $module . ']'] = $module;
     }
-    $edit['search_default_module'] = 'node';
+    $edit['default_module'] = 'node';
 
     $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
 
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php
index 9e7f134..d086be2 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchEmbedFormTest.php
@@ -43,7 +43,7 @@ class SearchEmbedFormTest extends SearchTestBase {
 
     // Set up a dummy initial count of times the form has been submitted.
     $this->submit_count = 12;
-    variable_set('search_embedded_form_submitted', $this->submit_count);
+    config('search.settings')->set('search_embedded_form_submitted', $this->submit_count)->save();
     $this->refreshVariables();
   }
 
@@ -56,7 +56,7 @@ class SearchEmbedFormTest extends SearchTestBase {
       array('name' => 'John'),
       t('Send away'));
     $this->assertText(t('Test form was submitted'), 'Form message appears');
-    $count = variable_get('search_embedded_form_submitted', 0);
+    $count = config('search.settings')->get('search_embedded_form_submitted');
     $this->assertEqual($this->submit_count + 1, $count, 'Form submission count is correct');
     $this->submit_count = $count;
 
@@ -67,7 +67,7 @@ class SearchEmbedFormTest extends SearchTestBase {
       array('name' => 'John'),
       t('Send away'));
     $this->assertText(t('Test form was submitted'), 'Form message appears');
-    $count = variable_get('search_embedded_form_submitted', 0);
+    $count = config('search.settings')->get('search_embedded_form_submitted');
     $this->assertEqual($this->submit_count + 1, $count, 'Form submission count is correct');
     $this->submit_count = $count;
 
@@ -77,7 +77,7 @@ class SearchEmbedFormTest extends SearchTestBase {
       array('keys' => 'foo'),
       t('Search'));
     $this->assertNoText(t('Test form was submitted'), 'Form message does not appear');
-    $count = variable_get('search_embedded_form_submitted', 0);
+    $count = config('search.settings')->get('search_embedded_form_submitted');
     $this->assertEqual($this->submit_count, $count, 'Form submission count is correct');
     $this->submit_count = $count;
   }
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchKeywordsConditionsTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchKeywordsConditionsTest.php
index 179b825..5937ba7 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchKeywordsConditionsTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchKeywordsConditionsTest.php
@@ -26,8 +26,7 @@ class SearchKeywordsConditionsTest extends SearchTestBase {
     // Login with sufficient privileges.
     $this->drupalLogin($this->searching_user);
     // Test with all search modules enabled.
-    variable_set('search_active_modules', array('node' => 'node', 'user' => 'user', 'search_extra_type' => 'search_extra_type'));
-    menu_router_rebuild();
+    config('search.settings')->set('active_modules', array('node' => 'node', 'user' => 'user', 'search_extra_type' => 'search_extra_type'))->save();    menu_router_rebuild();
   }
 
   /**
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchMatchTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchMatchTest.php
index e222341..a822600 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchMatchTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchMatchTest.php
@@ -34,7 +34,7 @@ class SearchMatchTest extends SearchTestBase {
    * Set up a small index of items to test against.
    */
   function _setup() {
-    variable_set('minimum_word_size', 3);
+    config('search.settings')->set('minimum_word_size', 3)->save();
 
     for ($i = 1; $i <= 7; ++$i) {
       search_index($i, SEARCH_TYPE, $this->getText($i));
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchPageOverrideTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchPageOverrideTest.php
index 590f68b..a604494 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchPageOverrideTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchPageOverrideTest.php
@@ -29,7 +29,7 @@ class SearchPageOverrideTest extends SearchTestBase {
     $this->drupalLogin($this->search_user);
 
     // Enable the extra type module for searching.
-    variable_set('search_active_modules', array('node' => 'node', 'user' => 'user', 'search_extra_type' => 'search_extra_type'));
+    config('search.settings')->set('active_modules', array('node' => 'node', 'user' => 'user', 'search_extra_type' => 'search_extra_type'))->save();
     menu_router_rebuild();
   }
 
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php
index ae3ee79..03b9619 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchPageTextTest.php
@@ -60,7 +60,7 @@ class SearchPageTextTest extends SearchTestBase {
 
     // Test a search input exceeding the limit of AND/OR combinations to test
     // the Denial-of-Service protection.
-    $limit = variable_get('search_and_or_limit', 7);
+    $limit = config('search.settings')->get('and_or_limit');
     $keys = array();
     for ($i = 0; $i < $limit + 1; $i++) {
       $keys[] = $this->randomName(3);
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchTokenizerTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchTokenizerTest.php
index 2624abb..4192f1f 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchTokenizerTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchTokenizerTest.php
@@ -30,8 +30,10 @@ class SearchTokenizerTest extends SearchTestBase {
   function testTokenizer() {
     // Set the minimum word size to 1 (to split all CJK characters) and make
     // sure CJK tokenizing is turned on.
-    variable_set('minimum_word_size', 1);
-    variable_set('overlap_cjk', TRUE);
+    config('search.settings')
+      ->set('minimum_word_size', 1)
+      ->set('overlap_cjk', TRUE)
+      ->save();
     $this->refreshVariables();
 
     // Create a string of CJK characters from various character ranges in
@@ -116,8 +118,10 @@ class SearchTokenizerTest extends SearchTestBase {
   function testNoTokenizer() {
     // Set the minimum word size to 1 (to split all CJK characters) and make
     // sure CJK tokenizing is turned on.
-    variable_set('minimum_word_size', 1);
-    variable_set('overlap_cjk', TRUE);
+    config('search.settings')
+      ->set('minimum_word_size', 1)
+      ->set('overlap_cjk', TRUE)
+      ->save();
     $this->refreshVariables();
 
     $letters = 'abcdefghijklmnopqrstuvwxyz';
diff --git a/core/modules/search/search.admin.inc b/core/modules/search/search.admin.inc
index bef8fd9..171e73f 100644
--- a/core/modules/search/search.admin.inc
+++ b/core/modules/search/search.admin.inc
@@ -50,10 +50,12 @@ function _search_get_module_names() {
  * @see search_admin_reindex_submit()
  */
 function search_admin_settings($form) {
+  $config = config('search.settings');
+
   // Collect some stats
   $remaining = 0;
   $total = 0;
-  foreach (variable_get('search_active_modules', array('node', 'user')) as $module) {
+  foreach (config('search.settings')->get('active_modules') as $module) {
     if ($status = module_invoke($module, 'search_status')) {
       $remaining += $status['remaining'];
       $total += $status['total'];
@@ -74,10 +76,10 @@ function search_admin_settings($form) {
     '#type' => 'fieldset',
     '#title' => t('Indexing throttle')
   );
-  $form['indexing_throttle']['search_cron_limit'] = array(
+  $form['indexing_throttle']['cron_limit'] = array(
     '#type' => 'select',
     '#title' => t('Number of items to index per cron run'),
-    '#default_value' => variable_get('search_cron_limit', 100),
+    '#default_value' => $config->get('cron_limit'),
     '#options' => $items,
     '#description' => t('The maximum number of items indexed in each pass of a <a href="@cron">cron maintenance task</a>. If necessary, reduce the number of items to prevent timeouts and memory errors while indexing.', array('@cron' => url('admin/reports/status')))
   );
@@ -92,7 +94,7 @@ function search_admin_settings($form) {
   $form['indexing_settings']['minimum_word_size'] = array(
     '#type' => 'number',
     '#title' => t('Minimum word length to index'),
-    '#default_value' => variable_get('minimum_word_size', 3),
+    '#default_value' => $config->get('minimum_word_size'),
     '#min' => 1,
     '#max' => 1000,
     '#description' => t('The number of characters a word has to be to be indexed. A lower setting means better search result ranking, but also a larger database. Each search query must contain at least one keyword that is this size (or longer).')
@@ -100,7 +102,7 @@ function search_admin_settings($form) {
   $form['indexing_settings']['overlap_cjk'] = array(
     '#type' => 'checkbox',
     '#title' => t('Simple CJK handling'),
-    '#default_value' => variable_get('overlap_cjk', TRUE),
+    '#default_value' => $config->get('overlap_cjk'),
     '#description' => t('Whether to apply a simple Chinese/Japanese/Korean tokenizer based on overlapping sequences. Turn this off if you want to use an external preprocessor for this instead. Does not affect other languages.')
   );
 
@@ -109,18 +111,18 @@ function search_admin_settings($form) {
     '#title' => t('Active search modules')
   );
   $module_options = _search_get_module_names();
-  $form['active']['search_active_modules'] = array(
+  $form['active']['active_modules'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Active modules'),
     '#title_display' => 'invisible',
-    '#default_value' => variable_get('search_active_modules', array('node', 'user')),
+    '#default_value' => $config->get('active_modules'),
     '#options' => $module_options,
     '#description' => t('Choose which search modules are active from the available modules.')
   );
-  $form['active']['search_default_module'] = array(
+  $form['active']['default_module'] = array(
     '#title' => t('Default search module'),
     '#type' => 'radios',
-    '#default_value' => variable_get('search_default_module', 'node'),
+    '#default_value' => $config->get('default_module'),
     '#options' => $module_options,
     '#description' => t('Choose which search module is the default.')
   );
@@ -128,14 +130,14 @@ function search_admin_settings($form) {
   $form['#submit'][] = 'search_admin_settings_submit';
 
   // Per module settings
-  foreach (variable_get('search_active_modules', array('node', 'user')) as $module) {
+  foreach (config('search.settings')->get('active_modules') as $module) {
     $added_form = module_invoke($module, 'search_admin');
     if (is_array($added_form)) {
       $form = array_merge($form, $added_form);
     }
   }
 
-  return system_settings_form($form);
+  return system_config_form($form, $form_state);
 }
 
 /**
@@ -144,10 +146,10 @@ function search_admin_settings($form) {
 function search_admin_settings_validate($form, &$form_state) {
   // Check whether we selected a valid default.
   if ($form_state['triggering_element']['#value'] != t('Reset to defaults')) {
-    $new_modules = array_filter($form_state['values']['search_active_modules']);
-    $default = $form_state['values']['search_default_module'];
+    $new_modules = array_filter($form_state['values']['active_modules']);
+    $default = $form_state['values']['default_module'];
     if (!in_array($default, $new_modules, TRUE)) {
-      form_set_error('search_default_module', t('Your default search module is not selected as an active module.'));
+      form_set_error('default_module', t('Your default search module is not selected as an active module.'));
     }
   }
 }
@@ -156,24 +158,38 @@ function search_admin_settings_validate($form, &$form_state) {
  * Form submission handler for search_admin_settings().
  */
 function search_admin_settings_submit($form, &$form_state) {
+  $config = config('search.settings');
   // If these settings change, the index needs to be rebuilt.
-  if ((variable_get('minimum_word_size', 3) != $form_state['values']['minimum_word_size']) ||
-      (variable_get('overlap_cjk', TRUE) != $form_state['values']['overlap_cjk'])) {
+  if (($config->get('minimum_word_size') != $form_state['values']['minimum_word_size']) || ($config->get('overlap_cjk') != $form_state['values']['overlap_cjk'])) {
+    $config->set('minimum_word_size', $form_state['values']['minimum_word_size']);
+    $config->set('overlap_cjk', $form_state['values']['overlap_cjk']);
     drupal_set_message(t('The index will be rebuilt.'));
     search_reindex();
   }
-  $current_modules = variable_get('search_active_modules', array('node', 'user'));
+  if ($config->get('cron_limit') != $form_state['values']['cron_limit']) {
+    $config->set('cron_limit', $form_state['values']['cron_limit']);
+  }
+  if ($config->get('default_module') != $form_state['values']['default_module']) {
+    $config->set('default_module', $form_state['values']['default_module']);
+  }
+  $current_modules = $config->get('active_modules');
   // Check whether we are resetting the values.
   if ($form_state['triggering_element']['#value'] == t('Reset to defaults')) {
     $new_modules = array('node', 'user');
   }
   else {
-    $new_modules = array_filter($form_state['values']['search_active_modules']);
+    $new_modules = array_filter($form_state['values']['active_modules']);
   }
-  if (array_diff($current_modules, $new_modules)) {
+  if ($current_modules != $new_modules) {
+    $enabled_modules = array();
+    foreach ($new_modules as $module) {
+      $enabled_modules[$module] = $module;
+    }
+    $config->set('active_modules', $enabled_modules);
     drupal_set_message(t('The active search modules have been changed.'));
     variable_set('menu_rebuild_needed', TRUE);
   }
+  $config->save();
 }
 
 /**
diff --git a/core/modules/search/search.api.php b/core/modules/search/search.api.php
index 0f43460..58c785c 100644
--- a/core/modules/search/search.api.php
+++ b/core/modules/search/search.api.php
@@ -69,7 +69,7 @@ function sample_search_conditions_callback($keys) {
   if (!empty($_REQUEST['sample_search_keys'])) {
     $conditions['sample_search_keys'] = $_REQUEST['sample_search_keys'];
   }
-  if ($force_keys = variable_get('sample_search_force_keywords', '')) {
+  if ($force_keys = config('search.settings')->get('sample_search_force_keywords')) {
     $conditions['sample_search_force_keywords'] = $force_keys;
   }
   return $conditions;
@@ -328,15 +328,16 @@ function hook_search_preprocess($text) {
  * When implementing this hook, your module should index content items that
  * were modified or added since the last run. PHP has a time limit
  * for cron, though, so it is advisable to limit how many items you index
- * per run using variable_get('search_cron_limit') (see example below). Also,
- * since the cron run could time out and abort in the middle of your run, you
- * should update your module's internal bookkeeping on when items have last
- * been indexed as you go rather than waiting to the end of indexing.
+ * per run using config('search.settings')->get('cron_limit') (see
+ * example below). Also, * since the cron run could time out and abort in the
+ * middle of your run, you * should update your module's internal bookkeeping on
+ * when items have last * been indexed as you go rather than waiting to the end
+ * of indexing.
  *
  * @ingroup search
  */
 function hook_update_index() {
-  $limit = (int)variable_get('search_cron_limit', 100);
+  $limit = (int) config('search.settings')->get('cron_limit');
 
   $result = db_query_range("SELECT n.nid FROM {node} n LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid WHERE d.sid IS NULL OR d.reindex <> 0 ORDER BY d.reindex ASC, n.nid ASC", 0, $limit);
 
diff --git a/core/modules/search/search.install b/core/modules/search/search.install
index c450f05..d3b86cd 100644
--- a/core/modules/search/search.install
+++ b/core/modules/search/search.install
@@ -6,15 +6,6 @@
  */
 
 /**
- * Implements hook_uninstall().
- */
-function search_uninstall() {
-  variable_del('minimum_word_size');
-  variable_del('overlap_cjk');
-  variable_del('search_cron_limit');
-}
-
-/**
  * Implements hook_schema().
  */
 function search_schema() {
@@ -153,3 +144,19 @@ function search_schema() {
 
   return $schema;
 }
+
+/**
+ * Update search module to use the configuration system.
+ */
+function search_update_8000() {
+  config_install_default_config('search');
+  update_variables_to_config('search.settings', array(
+   'minimum_word_size' => 'minimum_word_size',
+   'overlap_cjk' => 'overlap_cjk',
+   'search_cron_limit' => 'cron_limit',
+   'search_tag_weights' => 'tag_weights',
+   'search_active_modules' => 'active_modules',
+   'search_and_or_limit' => 'and_or_limit',
+   'search_default_module' => 'default_module',
+  ));
+}
diff --git a/core/modules/search/search.module b/core/modules/search/search.module
index f567dae..cb91a4c 100644
--- a/core/modules/search/search.module
+++ b/core/modules/search/search.module
@@ -277,7 +277,7 @@ function search_get_info($all = FALSE) {
     return $search_hooks;
   }
 
-  $active = variable_get('search_active_modules', array('node', 'user'));
+  $active = config('search.settings')->get('active_modules');
   return array_intersect_key($search_hooks, array_flip($active));
 }
 
@@ -289,7 +289,7 @@ function search_get_info($all = FALSE) {
  */
 function search_get_default_module_info() {
   $info = search_get_info();
-  $default = variable_get('search_default_module', 'node');
+  $default = config('search.settings')->get('default_module');
   if (isset($info[$default])) {
     return $info[$default];
   }
@@ -367,7 +367,7 @@ function search_cron() {
   // to date.
   drupal_register_shutdown_function('search_update_totals');
 
-  foreach (variable_get('search_active_modules', array('node', 'user')) as $module) {
+  foreach (config('search.settings')->get('active_modules') as $module) {
     // Update word index
     module_invoke($module, 'update_index');
   }
@@ -428,7 +428,7 @@ function search_simplify($text) {
   search_invoke_preprocess($text);
 
   // Simple CJK handling
-  if (variable_get('overlap_cjk', TRUE)) {
+  if (config('search.settings')->get('overlap_cjk')) {
     $text = preg_replace_callback('/[' . PREG_CLASS_CJK . ']+/u', 'search_expand_cjk', $text);
   }
 
@@ -482,7 +482,7 @@ function search_simplify($text) {
  *   Tokenized text, starting and ending with a space character.
  */
 function search_expand_cjk($matches) {
-  $min = variable_get('minimum_word_size', 3);
+  $min = config('search.settings')->get('minimum_word_size');
   $str = $matches[0];
   $length = drupal_strlen($str);
   // If the text is shorter than the minimum word size, don't tokenize it.
@@ -561,7 +561,7 @@ function search_invoke_preprocess(&$text) {
  * @ingroup search
  */
 function search_index($sid, $module, $text) {
-  $minimum_word_size = variable_get('minimum_word_size', 3);
+  $minimum_word_size = config('search.settings')->get('minimum_word_size');
 
   // Link matching
   global $base_url;
@@ -570,19 +570,7 @@ function search_index($sid, $module, $text) {
   // Multipliers for scores of words inside certain HTML tags. The weights are stored
   // in a variable so that modules can overwrite the default weights.
   // Note: 'a' must be included for link ranking to work.
-  $tags = variable_get('search_tag_weights', array(
-    'h1' => 25,
-    'h2' => 18,
-    'h3' => 15,
-    'h4' => 12,
-    'h5' => 9,
-    'h6' => 6,
-    'u' => 3,
-    'b' => 3,
-    'i' => 3,
-    'strong' => 3,
-    'em' => 3,
-    'a' => 10));
+  $tags = config('search.settings')->get('tag_weights');
 
   // Strip off all ignored tags to speed up processing, but insert space before/after
   // them to keep word boundaries.
diff --git a/core/modules/search/tests/modules/search_embedded_form/search_embedded_form.module b/core/modules/search/tests/modules/search_embedded_form/search_embedded_form.module
index 4845796..ccd5e65 100644
--- a/core/modules/search/tests/modules/search_embedded_form/search_embedded_form.module
+++ b/core/modules/search/tests/modules/search_embedded_form/search_embedded_form.module
@@ -30,7 +30,7 @@ function search_embedded_form_menu() {
  * @see search_embedded_form_form_submit().
  */
 function search_embedded_form_form($form, &$form_state) {
-  $count = variable_get('search_embedded_form_submitted', 0);
+  $count = config('search.settings')->get('search_embedded_form_submitted');
 
   $form['name'] = array(
     '#type' => 'textfield',
@@ -56,8 +56,10 @@ function search_embedded_form_form($form, &$form_state) {
  * Submit handler for search_embedded_form_form().
  */
 function search_embedded_form_form_submit($form, &$form_state) {
-  $count = variable_get('search_embedded_form_submitted', 0) + 1;
-  variable_set('search_embedded_form_submitted', $count);
+  $search_config = config('search.settings');
+  $submit_count = (int) $search_config->get('search_embedded_form_submitted');
+  $count = $submit_count + 1;
+  $search_config->set('search_embedded_form_submitted', $count)->save();
   drupal_set_message(t('Test form was submitted'));
 }
 
