diff --git a/apachesolr_user.module b/apachesolr_user.module
index 8d10d5a..90b095d 100644
--- a/apachesolr_user.module
+++ b/apachesolr_user.module
@@ -53,6 +53,7 @@ function apachesolr_index_user_solr_document(ApacheSolrDocument $document, $acco
 
   $document->content = apachesolr_clean_text($text);
 
+  $document->bs_status = $account->status;
   $document->created = apachesolr_date_iso($account->created);
   $document->access = apachesolr_date_iso($account->access);
 
@@ -132,6 +133,13 @@ function apachesolr_user_result($doc, &$result, &$extra) {
 }
 
 /**
+ * Implements hook_apachesolr_index_document_build_entity()
+ */
+function apachesolr_user_apachesolr_index_document_build_user(ApacheSolrDocument $document, $user, $env_id) {
+  $document->setMultiValue('access__user', 1);
+}
+
+/**
  * Implements hook_apachesolr_query_alter().
  */
 function apachesolr_user_apachesolr_query_alter(DrupalSolrQueryInterface $query) {
@@ -141,6 +149,15 @@ function apachesolr_user_apachesolr_query_alter(DrupalSolrQueryInterface $query)
     // Exclude files from MLT results.
     $query->addFilter('entity_type', 'user', TRUE);
   }
+
+  if (module_exists('apachesolr_access') && user_access('access user profiles')) {
+    $qs =& $query->getFilterSubQueries();
+    $q = array_shift($qs);
+    $q->addFilter('access__user', TRUE);
+    $subquery = apachesolr_drupal_subquery();
+    $subquery->addFilter('access__user', TRUE);
+    $query->addFilterSubQuery($q, 'OR');
+  }
 }
 
 function apachesolr_user_facetapi_searcher_info_alter(array &$searcher_info) {
