diff --git a/apachesolr_search.module b/apachesolr_search.module
index e4c0135..162c1d8 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -667,23 +667,32 @@ function apachesolr_search_search_results($keys = NULL, $conditions = NULL, $sea
       $params['spellcheck'] = 'true';
     }
 
-    // Empty text Behavior
-    if (!$keys && !isset($conditions['f']) && ($empty_search_behavior == 'browse' || $empty_search_behavior == 'blocks')) {
-      // Pass empty search behavior as string on to apachesolr_search_search_page()
-      // Hardcoded apachesolr name since we rely on this for the facets
-      apachesolr_search_run_empty('apachesolr', $params, $search_page->search_path, $solr);
-      $results['apachesolr_search_browse'] = $empty_search_behavior;
-
-      if ($empty_search_behavior == 'browse') {
-        // Hide sidebar blocks for content-area browsing instead.
-        apachesolr_suppress_blocks($search_page->env_id, TRUE);
+    // No search by user
+    if (!$keys && !isset($conditions['f'])) {
+      // A search wasn't executed by the user so we inform facetapi about this.
+      // This action is important because it has a different impact on the facet
+      // blocks
+      $searcher = 'apachesolr@' . $search_page->env_id;
+      if ($adapter = facetapi_adapter_load($searcher)) {
+        $adapter->setSearchExecuted(FALSE);
       }
     }
-    // Full text behavior. Triggers with a text search or a facet
-    elseif (($keys || isset($conditions['f'])) || ($empty_search_behavior == 'results')) {
-      $params['q'] = $keys;
-      // Hardcoded apachesolr name since we rely on this for the facets
-      $results = apachesolr_search_run('apachesolr', $params, $solrsort, $search_page->search_path, pager_find_page(), $solr);
+    // Empty text Behavior
+    switch($empty_search_behavior) {
+      case 'browse' :
+        apachesolr_search_run_empty('apachesolr', $params, $search_page->search_path, $solr);
+        $results['apachesolr_search_browse'] = $empty_search_behavior;
+        apachesolr_suppress_blocks($search_page->env_id, TRUE);
+        break;
+      case 'blocks' :
+        apachesolr_search_run_empty('apachesolr', $params, $search_page->search_path, $solr);
+        $results['apachesolr_search_browse'] = $empty_search_behavior;
+        break;
+      case 'results' :
+        $params['q'] = $keys;
+        // Hardcoded apachesolr name since we rely on this for the facets
+        $results = apachesolr_search_run('apachesolr', $params, $solrsort, $search_page->search_path, pager_find_page(), $solr);
+        break;
     }
   }
   catch (Exception $e) {
diff --git a/plugins/facetapi/adapter.inc b/plugins/facetapi/adapter.inc
index 56c62a6..c26941a 100644
--- a/plugins/facetapi/adapter.inc
+++ b/plugins/facetapi/adapter.inc
@@ -9,6 +9,14 @@
  * Facet API adapter for the Apache Solr Search Integration module.
  */
 class ApacheSolrFacetapiAdapter extends FacetapiAdapter {
+
+  /**
+   * Status of whether a user executed a search query.
+   *
+   * @var boolean|NULL
+   */
+  protected $searchExecuted;
+
   /**
    * Returns the path to the admin settings for a given realm.
    *
@@ -52,12 +60,26 @@ class ApacheSolrFacetapiAdapter extends FacetapiAdapter {
    * Returns a boolean flagging whether $this->_searcher executed a search.
    */
   public function searchExecuted() {
-    // Initial check - has ANY solr query run in our environment.
-    $env_id = $this->info['instance'];
-    $this_has_searched = apachesolr_has_searched($env_id);
-    // Secondary check - do we have results for this searcher?
-    $this_has_searched = $this_has_searched && apachesolr_static_response_cache($this->getSearcher());
-    return $this_has_searched;
+    if (NULL === $this->searchExecuted) {
+      // Initial check - has ANY solr query run in our environment.
+      $env_id = $this->info['instance'];
+      $this_has_searched = apachesolr_has_searched($env_id);
+      // Secondary check - do we have results for this searcher?
+      $this->searchExecuted = $this_has_searched && apachesolr_static_response_cache($this->getSearcher());
+    }
+    return $this->searchExecuted;
+  }
+
+  /**
+   * Manually sets the status of whether a user executed a search query.
+   *
+   * @param $executed
+   *   A boolean flagging whether a search was executed by the user. Pass NULL
+   *   to reset the $this->searchExecuted property so that it is re-calculated
+   *   on the subsequent call to ApacheSolrFacetapiAdapter::searchExecuted().
+   */
+  public function setSearchExecuted($executed) {
+    $this->searchExecuted = $executed;
   }
 
   public function suppressOutput($realm_name) {
