diff --git a/apachesolr_search.admin.inc b/apachesolr_search.admin.inc
index 396608c..02f9db5 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'])) {
+    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 3dd46bc..32fc7d5 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);
+        }
       }
     }
   }
@@ -312,6 +317,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
