diff --git a/apachesolr.admin.inc b/apachesolr.admin.inc
index dd3425e..dea6639 100644
--- a/apachesolr.admin.inc
+++ b/apachesolr.admin.inc
@@ -214,7 +214,7 @@ function apachesolr_environment_edit_validate($form, &$form_state) {
 function apachesolr_environment_edit_submit($form, &$form_state) {
   apachesolr_environment_save($form_state['values']);
   if (!empty($form_state['values']['make_default'])) {
-    variable_set('apachesolr_default_environment', $form_state['values']['env_id']);
+    apachesolr_default_environment($form_state['values']['env_id']);
   }
   cache_clear_all('apachesolr:environments', 'cache_apachesolr');
   drupal_set_message(t('The %name search environment has been saved.', array('%name' => $form_state['values']['name'])));
diff --git a/apachesolr.module b/apachesolr.module
index 8871e48..5b58e0b 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -975,6 +975,7 @@ function apachesolr_default_environment($env_id = NULL) {
 
   if (isset($env_id)) {
     $default_env_id = $env_id;
+    variable_set('apachesolr_default_environment', $env_id);
   }
   if (empty($default_env_id)) {
     $default_env_id = variable_get('apachesolr_default_environment', 'solr');
diff --git a/apachesolr_search.admin.inc b/apachesolr_search.admin.inc
index 396608c..c3559ff 100644
--- a/apachesolr_search.admin.inc
+++ b/apachesolr_search.admin.inc
@@ -299,6 +299,17 @@ function apachesolr_search_page_settings_form($form, &$form_state, $search_page
     $form['info']['search_path']['#description'] .= ' ' . t('You can use one % to make the search page dynamic.');
   }
 
+  if (module_exists('facetapi')) {
+    $is_default = $search_page->page_id == apachesolr_search_default_search_page();
+    $form['info']['make_default'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Make this Solr Search Page the default'),
+      '#description' => t('Makes  facets to link to this page when they are shown on non-search pages'),
+      '#default_value' => $is_default,
+      '#disabled' => $is_default,
+    );
+  }
+
   $form['info']['custom_filter_enable'] = array(
     '#type' => 'checkbox',
     '#title' => t('Custom Filter'),
@@ -466,8 +477,9 @@ function apachesolr_search_page_settings_form_submit($form, &$form_state) {
   $settings['apachesolr_search_spellcheck'] = $form_state['values']['apachesolr_search_spellcheck'];
   $settings['apachesolr_search_allow_user_input'] = $form_state['values']['apachesolr_search_allow_user_input'];
 
-  if (isset($form_state['values']['search_page']->settings)) {
-    $settings = array_merge($form_state['values']['search_page']->settings, $settings);
+  // Set the default search page settings
+  if (!empty($form_state['values']['make_default']) && isset($form_state['values']['page_id'])) {
+    apachesolr_search_default_search_page($form_state['values']['page_id']);
   }
 
   $search_page = new stdClass();
diff --git a/apachesolr_search.module b/apachesolr_search.module
index 3dd46bc..f6103e6 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -32,16 +32,17 @@ function apachesolr_search_init() {
       // Compares path with settings, runs query if there is a match.
       $patterns = drupal_strtolower($facet_pages);
       if (drupal_match_path($path, $patterns)) {
-        $searcher = 'apachesolr@' . $env_id;
-        if ($adapter = facetapi_adapter_load($searcher)) {
-          try {
-            $solr = apachesolr_get_solr($env_id);
-            apachesolr_search_run_empty('apachesolr', $params, $adapter->getSearchPath(), $solr);
-          }
-          catch (Exception $e) {
-            watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
+        try {
+          $solr = apachesolr_get_solr($env_id);
+          $search_page_id = apachesolr_search_default_search_page();
+          $search_page = apachesolr_search_page_load($search_page_id);
+          if (!empty($search_page->search_path)) {
+            apachesolr_search_run_empty('apachesolr', $params, $search_page->search_path, $solr);
           }
         }
+        catch (Exception $e) {
+          watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
+        }
       }
     }
   }
@@ -312,6 +313,22 @@ function apachesolr_search_get_value_title($search_page_id = NULL, $value = NULL
 }
 
 /**
+ * Get or set the default environment ID for the current page.
+ */
+function apachesolr_search_default_search_page($page_id = NULL) {
+  $default_page_id = &drupal_static(__FUNCTION__, NULL);
+
+  if (isset($page_id)) {
+    $default_page_id = $page_id;
+    variable_set('apachesolr_search_default_search_page', $page_id);
+  }
+  if (empty($default_page_id)) {
+    $default_page_id = variable_get('apachesolr_search_default_search_page', 'core_search');
+  }
+  return $default_page_id;
+}
+
+/**
  * Load a search page
  * @param string $page_id
  * @return array
