diff --git a/apachesolr_search.admin.inc b/apachesolr_search.admin.inc
index 964b7b7..91864c9 100644
--- a/apachesolr_search.admin.inc
+++ b/apachesolr_search.admin.inc
@@ -86,11 +86,17 @@ function apachesolr_search_page_list_pages() {
   );
 
   $search_pages = apachesolr_search_load_all_search_pages();
+  $default_search_page = apachesolr_search_default_search_page();
   foreach ($search_pages as $search_page) {
     $row = array();
 
     // Add the label
     $label = check_plain($search_page['label']);
+    // Is this row our default environment?
+    if ($search_page['page_id'] == $default_search_page) {
+      $label = t('!search_page <em>(Default)</em>', array('!search_page' => $label));
+    }
+
     $row[] = $label;
     // Add the link
     $row[] = array(
@@ -235,6 +241,18 @@ function apachesolr_search_page_settings_form(&$form_state, $search_page = NULL)
     ),
   );
 
+  $is_default = FALSE;
+  if (!empty($search_page)) {
+    $is_default = $search_page->page_id == apachesolr_search_default_search_page();
+  }
+  $form['make_default'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Make this Solr Search Page the default'),
+    '#description' => t('Useful for eg. making facets to link to this page when they are shown on non-search pages'),
+    '#default_value' => $is_default,
+    '#disabled' => $is_default,
+  );
+
   $form['info'] = array(
     '#title' => t('Search Page Information'),
     '#type' => 'fieldset',
@@ -481,8 +499,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'])) {
+    variable_set('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 cea5ab6..e1ae330 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -13,35 +13,40 @@
  * displayed.
  */
 function apachesolr_search_init() {
-  $env_id = apachesolr_default_environment();
-  $show_facets = apachesolr_environment_variable_get($env_id, 'apachesolr_search_show_facets', 0);
+  $search_page_id = apachesolr_search_default_search_page();
+  $search_page = apachesolr_search_page_load($search_page_id);
+  // Do not continue if our search page is not valid
+  if (empty($search_page)) {
+    return;
+  }
+
+  $show_facets = apachesolr_environment_variable_get($search_page->env_id, 'apachesolr_search_show_facets', 0);
   if ($show_facets && module_exists('facetapi')) {
-    // Initializes params for empty query.
-    $params = array(
-      'spellcheck' => 'false',
-      'fq' => array(),
-      'rows' => 1,
-    );
 
     // Converts current path to lowercase for case insensitive matching.
     $path = drupal_strtolower(drupal_get_path_alias(current_path()));
-    $facet_pages = apachesolr_environment_variable_get($env_id, 'apachesolr_search_facet_pages', '');
+    $facet_pages = apachesolr_environment_variable_get($search_page->env_id, 'apachesolr_search_facet_pages', '');
 
     // Iterates over each environment to check if an empty query should be run.
     if (!empty($facet_pages)) {
       // 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 {
+          if (!empty($search_page->search_path)) {
+            $solr = apachesolr_get_solr($search_page->env_id);
+            // Initializes params for empty query.
+            $params = array(
+              'spellcheck' => 'false',
+              'fq' => array(),
+              'rows' => 1,
+            );
+            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);
+        }
       }
     }
   }
@@ -297,6 +302,21 @@ function apachesolr_search_get_value_title($search_page_id = NULL, $value = NULL
 }
 
 /**
+ * Get or set the default search page 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;
+  }
+  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
@@ -1486,16 +1506,16 @@ function apachesolr_search_form_facetapi_realm_settings_form_alter(&$form, &$for
       '#type' => 'checkbox',
       '#title' => t('Show facets on non-search pages.'),
       '#default_value' => $show_facets,
+      '#weight' => '-10',
     );
 
     $form['apachesolr_search_facet_pages'] = array(
       '#title' => t('Non-search paths'),
       '#type' => 'textarea',
       '#default_value' => $facet_pages,
-      '#states' => array(
-        'visible' => array(
-          'input[name="apachesolr_search_show_facets"]' => array('checked' => TRUE),
-        ),
+      '#weight' => '-10',
+      '#dependency' => array(
+        'edit-apachesolr-search-show-facets' => array(1),
       ),
     );
 
