diff --git a/apachesolr.admin.inc b/apachesolr.admin.inc
index ece15b6..99f6ee6 100644
--- a/apachesolr.admin.inc
+++ b/apachesolr.admin.inc
@@ -101,6 +101,7 @@ function apachesolr_environment_edit_form($form, &$form_state, $environment = NU
   }
   $environment += array('env_id' => '', 'name' => '', 'url' => '', 'service_class' => '', 'conf' => array());
 
+  $form['#environment'] = $environment;
   $form['url'] = array(
     '#type' => 'textfield',
     '#title' => t('Solr server URL'),
diff --git a/apachesolr_access/apachesolr_access.module b/apachesolr_access/apachesolr_access.module
index bac5a28..f504533 100644
--- a/apachesolr_access/apachesolr_access.module
+++ b/apachesolr_access/apachesolr_access.module
@@ -11,7 +11,13 @@ function apachesolr_access_apachesolr_index_document_build_node($document, $node
     $account = drupal_anonymous_user();
   }
 
-  if (!node_access('view', $node, $account)) {
+  // When using a node access module like Domain Access which has
+  // access grants that vary for anonymous users for the same content,
+  // this variable should be set to 1.  Note that doing so will prevent
+  // any results from being returned if using apachesolr_multisitesearch
+  // from a different site.
+  $always_add = apachesolr_environment_variable_get($env_id, 'apachesolr_access_always_add_grants', 0);
+  if ($always_add || !node_access('view', $node, $account)) {
     // Get node access grants.
     $result = db_query('SELECT * FROM {node_access} WHERE (nid = 0 OR nid = :nid) AND grant_view = 1', array(':nid' => $node->nid));
     foreach ($result as $grant) {
@@ -41,8 +47,7 @@ function apachesolr_access_build_subquery($account) {
   }
   $node_access_query = apachesolr_drupal_subquery();
   if (user_access('bypass node access', $account)) {
-    // Access all content from the current site, or public content.
-    $node_access_query->addFilter('access__all', 0);
+    // Access all content from the current site.
     $node_access_query->addFilter('hash', apachesolr_site_hash());
   }
   else {
@@ -54,8 +59,13 @@ function apachesolr_access_build_subquery($account) {
         $node_access_query->addFilter('access_node_' . apachesolr_site_hash() . '_' . $realm, $gid);
       }
     }
-    $node_access_query->addFilter('access__all', 0);
   }
+  // Everyone can access public content. Note that if the variable
+  // 'apachesolr_access_always_add_grants' is TRUE, no content from this site
+  // is considered "public". However, this condition may match documents in
+  // the Solr index supplied by other sites when multiple sites are indexing
+  // into the same index , i.e. multisite search.
+  $node_access_query->addFilter('access__all', 0);
   return $node_access_query;
 }
 
@@ -105,11 +115,30 @@ function apachesolr_access_node_access_records($node) {
 }
 
 /**
- * Implements hook_form_alter().
+ * Implements hook_form_FORM_ID_alter().
  */
-function apachesolr_access_form_alter(&$form, $form_state, $form_id) {
-  if ($form_id == 'node_configure_rebuild_confirm') {
-    $form['#submit'][] = 'apachesolr_access_rebuild_nodeaccess';
+function apachesolr_access_form_node_configure_rebuild_confirm_alter(&$form, $form_state) {
+  $form['#submit'][] = 'apachesolr_access_rebuild_nodeaccess';
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function apachesolr_access_form_apachesolr_environment_edit_form_alter(&$form, $form_state) {
+  $form['conf']['apachesolr_access_always_add_grants'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Add access grants even for public content'),
+    '#default_value' => empty($form['#environment']['conf']['apachesolr_access_always_add_grants']) ? 0 : 1,
+    '#description' => t('Normally should be disabled. Changing this value requires all content to be re-indexed. Useful for sites using Domamin Access or simliar node acess modules with grants that vary for anonymous users.'),
+  );
+  $form['actions']['save']['#submit'][] = 'apachesolr_access_environment_edit_form_submit';
+  $form['actions']['save_edit']['#submit'][] = 'apachesolr_access_environment_edit_form_submit';
+}
+
+function apachesolr_access_environment_edit_form_submit($form, &$form_state) {
+  $prior = empty($form['#environment']['conf']['apachesolr_access_always_add_grants']) ? 0 : 1;
+  if ($form_state['values']['conf']['apachesolr_access_always_add_grants'] != $prior) {
+    apachesolr_access_rebuild_nodeaccess($form, $form_state);
   }
 }
 
@@ -119,7 +148,7 @@ function apachesolr_access_form_alter(&$form, $form_state, $form_id) {
  * This is unfortunate because not every node is going to be affected, but
  * there is little we can do.
  */
-function apachesolr_access_rebuild_nodeaccess(&$form, $form_state) {
+function apachesolr_access_rebuild_nodeaccess($form, $form_state) {
   drupal_set_message(t('Solr search index will be rebuilt.'));
   // Clear last updated
   apachesolr_clear_last_index_position();
