diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index e1bf260..9268f2f 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -7,8 +7,9 @@ Apache Solr integration 7.x-1.x-xxxx, xxxx-xx-xx
 
 Apache Solr integration 7.x-1.0-BETA4, xxxx-xx-xx
 ------------------------------
-#562214 by ecofinn, wmostry, jpmckinney: Problems with double-encoded ampersands.
-#997480 by jpmckinney | davidwhthomas: Facet checkboxes are duplicated following other javascript activity on page.
+#1080652 by elliotttf, pwolanin: Allow other modules to return search results on solr failure.
+#562214  by ecofinn, wmostry, jpmckinney: Problems with double-encoded ampersands.
+#997480  by jpmckinney | davidwhthomas: Facet checkboxes are duplicated following other javascript activity on page.
 #1098038 by pwolanin, mgifford: fix spelling suggestion incorrect use of LABEL tag.
 #1099390 by jpmckinney: Fatal error: Call to undefined function apachesolr_nodeaccess_build_subquery().
 #1098222 by pwolanin: Rename and make the nodeaccess module more generic.
diff --git a/apachesolr.admin.inc b/apachesolr.admin.inc
index b2fc17f..18a9e1c 100644
--- a/apachesolr.admin.inc
+++ b/apachesolr.admin.inc
@@ -274,14 +274,22 @@ function apachesolr_settings($form, &$form_state) {
     '#default_value' => variable_get('apachesolr_facetstyle', 'checkboxes'),
     '#options' => array('links' => t('Links only'), 'checkboxes' => t('Links with checkboxes')),
   );
+
+  $options = array('apachesolr:show_error' => t('Show error message'));
+  $system_info = system_get_info('module');
+  foreach (search_get_info() as $module => $search_info) {
+    // Don't allow apachesolr to return results on failure of apachesolr.
+    if ($module == 'apachesolr_search') {
+      continue;
+    }
+    $options[$module] = t('Show @name search results', array('@name' => $system_info[$module]['name']));
+  }
+  $options['apachesolr:show_no_results'] = t('Show no results');
   $form['apachesolr_failure'] = array(
     '#type' => 'select',
     '#title' => t('On failure'),
-    '#options' => array('show_error' => t('Show error message'),
-      'show_drupal_results' => t('Show core Drupal results'),
-      'show_no_results' => t('Show no results')
-    ),
-    '#default_value' => variable_get('apachesolr_failure', 'show_error'),
+    '#options' => $options,
+    '#default_value' => variable_get('apachesolr_failure', 'apachesolr:show_error'),
     '#description' => t('What to display if Apache Solr search is not available.'),
   );
 
diff --git a/apachesolr.install b/apachesolr.install
index 1511ee9..d98e250 100644
--- a/apachesolr.install
+++ b/apachesolr.install
@@ -407,3 +407,21 @@ function apachesolr_update_7003() {
   variable_del('apachesolr_exclude_comments_types');
 }
 
+/**
+ * Update apachesolr_failure variable.
+ */
+function apachesolr_update_7004() {
+  $failure = variable_get('apachesolr_failure', NULL);
+  switch ($failure) {
+    case 'show_error':
+      variable_set('apachesolr_failure', 'apachesolr:show_error');
+      break;
+    case 'show_drupal_results':
+      variable_set('apachesolr_failure', 'node');
+      break;
+    case 'show_no_results':
+      variable_set('apachesolr_failure', 'apachesolr:show_no_results');
+      break;
+  }
+}
+
diff --git a/apachesolr.module b/apachesolr.module
index 04b7f04..73b703e 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -157,19 +157,24 @@ function apachesolr_init() {
  *   The search query that was issued at the time of failure.
  */
 function apachesolr_failure($search_name, $querystring) {
-  $fail_rule = variable_get('apachesolr_failure', 'show_error');
+  $fail_rule = variable_get('apachesolr_failure', 'apachesolr:show_error');
 
   switch ($fail_rule) {
-    case 'show_error':
+    case 'apachesolr:show_error':
       drupal_set_message(t('The Apache Solr search engine is not available. Please contact your site administrator.'), 'error');
       break;
-    case 'show_drupal_results':
-      drupal_set_message(t("%search_name is not available. Your search is being redirected.", array('%search_name' => $search_name)));
-      // TODO - apachesolr_server_variable_get()
-      drupal_goto('search/node/' . drupal_encode_path($querystring));
+    case 'apachesolr:show_no_results':
+      // Do nothing.
+      break;
+    default:
+      // If we're failing over to another module make sure the search is available.
+      $search_info = search_get_info();
+      if (isset($search_info[$fail_rule])) {
+        $search_info = $search_info[$fail_rule];
+        drupal_set_message(t("%search_name is not available. Your search is being redirected.", array('%search_name' => $search_name)));
+        drupal_goto('search/' . $search_info['path'] . '/' . drupal_encode_path($querystring));
+      }
       break;
-    case 'show_no_results':
-      return;
   }
 }
 
