Index: modules/ds_search/ds_search.module
===================================================================
--- modules/ds_search/ds_search.module	(revision 756)
+++ modules/ds_search/ds_search.module	(working copy)
@@ -235,6 +235,15 @@
   if (isset($_GET['filters']) && trim($_GET['filters'])) {
     $conditions['filters'] = trim($_GET['filters']);
   }
+  
+  // We may also have filters added by facet API module. The 'f'
+  // is determined by constant FacetapiAdapter::FILTER_KEY. Hard
+  // coded here to avoid extra class loading.
+  if (!empty($_GET['f']) && is_array($_GET['f'])) {
+    if (module_exists('facetapi')) {
+      $conditions['f'] = $_GET['f'];
+    }
+  }
 
   if (variable_get('apachesolr_search_browse', 'browse') != 'none') {
     // Set a condition so the search is triggered.
@@ -257,7 +266,7 @@
   // the #theme key. By using our own search info type, we can call
   // hook_search_page ourselves and be as flexible as we need to be.
   $ds_search_type = variable_get('ds_search_type', 'node') . '_ds_search_execute';
-
+  
   // We're not going to babysit here, so call directly.
   return $ds_search_type($keys, $conditions);
 }
@@ -535,6 +544,9 @@
 function apachesolr_search_ds_search_execute($keys = NULL, $conditions = NULL) {
   $find = apachesolr_search_search_execute($keys, $conditions);
   $results = array();
+  if (isset($find['apachesolr_search_browse'])) {
+    unset($find['apachesolr_search_browse']);
+  }
   foreach ($find as $item) {
     $node = @unserialize(urldecode($item['fields']['tm_node'][0]));
     if (!isset($node->nid)) {
