diff --git a/apachesolr.module b/apachesolr.module
index 9d63f92..77637b8 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -1707,6 +1707,44 @@ function apachesolr_apachesolr_index_document_node_book_build(ApacheSolrDocument
 }
 
 /**
+ * Implements hook_apachesolr_index_document_node_build().
+ *
+ * Retrieves the comments from the core hook node_update_index into the
+ * node entity document that is being prepared to be sent to Solr.
+ *
+ * @param ApacheSolrDocument $document
+ * @param array $entity
+ * @param string $entity_type
+ */
+function apachesolr_apachesolr_index_document_node_build(ApacheSolrDocument $document, $entity, $entity_type) {
+    // Fetch extra data normally not visible, including comments.
+    // We do this manually (with module_implements instead of node_invoke_nodeapi)
+    // because we want a keyed array to come back. Only in this way can we decide
+    // whether to index comments or not.
+    $extra = array();
+    foreach (module_implements('node_update_index') as $module) {
+      // Invoke nodeapi if this module has not been excluded, for example,
+      // exclude 'comment' for a type to skip indexing its comments.
+      if (empty($exclude_nodeapi[$module])) {
+        $function = $module . '_node_update_index';
+        if ($output = $function($node)) {
+          $extra[$module] = $output;
+        }
+      }
+    }
+    if (isset($extra['comment'])) {
+      $comments = $extra['comment'];
+      unset($extra['comment']);
+      $document->ts_comments = apachesolr_clean_text($comments);
+      // @todo: do we want to reproduce apachesolr_add_tags_to_document() for comments?
+    }
+    // Use an omit-norms text field since this is generally going to be short; not
+    // really a full-text field.
+    $document->tos_content_extra = apachesolr_clean_text(implode(' ', $extra));
+}
+
+
+/**
  * Strip html tags and also control characters that cause Jetty/Solr to fail.
  */
 function apachesolr_clean_text($text) {
