diff --git includes/SearchApiSpellcheckSolr.inc includes/SearchApiSpellcheckSolr.inc
new file mode 100644
index 0000000..e578662
--- /dev/null
+++ includes/SearchApiSpellcheckSolr.inc
@@ -0,0 +1,34 @@
+<?php
+/**
+ * @file SearchApiSpellcheckSolr.inc
+ *
+ *
+ */
+
+class SearchApiSpellcheckSolr extends SearchApiSpellcheck {
+
+  /**
+   * Constructor
+   * @param Apache_Solr_Response $response
+   */
+  function __construct(Apache_Solr_Response $response) {
+    if (isset($response->spellcheck->suggestions)) {
+      $this->_solrSuggestions($response->spellcheck->suggestions);
+    }
+  }
+
+  /**
+   * Helper function creates suggestion objects from the results
+   *
+   * @param stdClass $suggestions
+   */
+  private function _solrSuggestions(stdClass $suggestions) {
+    foreach ($suggestions AS $word => $data) {
+      foreach ($data->suggestion AS $suggestion) {
+        $ws = new SearchApiSpellcheckSuggestion($word, $suggestion);
+        $this->addSuggestion($ws);
+      }
+    }
+  }
+
+}
diff --git schema.xml schema.xml
index 58d4dfe..a15615e 100644
--- schema.xml
+++ schema.xml
@@ -318,6 +318,11 @@
    <!-- Since sorting by ID is explicitly allowed, store item_id also in a sortable way. -->
    <copyField source="item_id" dest="is_search_api_id" />
 
+   <!-- This field is used to build the spellchecker index -->
+   <field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
+  <!-- copy all text fields into our spell field for indexing. -->
+   <copyField source="t_*" dest="spell"/>
+
    <!-- Dynamic field definitions.  If a field name is not found, dynamicFields
         will be used if the name matches any of the patterns.
         RESTRICTION: the glob-like pattern in the name attribute must have
diff --git search_api_solr.info search_api_solr.info
index cf2a3eb..3724238 100644
--- search_api_solr.info
+++ search_api_solr.info
@@ -8,6 +8,7 @@ package = Search
 files[] = service.inc
 files[] = solr_connection.inc
 files[] = solr_field.inc
+files[] = includes/SearchApiSpellcheckSolr.inc
 files[] = SolrPhpClient/Apache/Solr/Document.php
 files[] = SolrPhpClient/Apache/Solr/Response.php
 files[] = SolrPhpClient/Apache/Solr/Service.php
diff --git service.inc service.inc
index ad04aa1..5db9369 100644
--- service.inc
+++ service.inc
@@ -130,7 +130,7 @@ class SearchApiSolrService extends SearchApiAbstractService {
   }
 
   public function supportsFeature($feature) {
-    return $feature == 'search_api_facets' || $feature == 'search_api_multi';
+    return $feature == 'search_api_facets' || $feature == 'search_api_multi' || $feature == 'search_api_spellcheck';
   }
 
   /**
@@ -444,6 +444,9 @@ class SearchApiSolrService extends SearchApiAbstractService {
     if (!empty($facet_params['facet.field'])) {
       $params += $facet_params;
     }
+    if (isset($options['search_api_spellcheck']) AND $options['search_api_spellcheck'] === TRUE) {
+      $params['spellcheck'] = 'true';
+    }
     $call_args = array(
       'query'  => &$keys,
       'offset' => &$offset,
@@ -547,6 +550,11 @@ class SearchApiSolrService extends SearchApiAbstractService {
       }
     }
 
+    // check for spellcheck suggestions
+    if (module_exists('search_api_spellcheck')) {
+      $results['search_api_spellcheck'] = new SearchApiSpellcheckSolr($response);
+    }
+
     return $results;
   }
 
diff --git solrconfig.xml solrconfig.xml
index 58d1d5f..ff8172b 100644
--- solrconfig.xml
+++ solrconfig.xml
@@ -557,7 +557,18 @@
           found -->
      <str name="f.name.hl.alternateField">name</str>
      <str name="f.text.hl.fragmenter">regex</str> <!-- defined below -->
+
+      <!-- By default, don't spell check -->
+      <str name="spellcheck">false</str>
+      <!-- Defaults for the spell checker when used -->
+      <str name="spellcheck.onlyMorePopular">true</str>
+      <str name="spellcheck.extendedResults">false</str>
+      <!--  The number of suggestions to return -->
+      <str name="spellcheck.count">1</str>
     </lst>
+    <arr name="last-components">
+      <str>spellcheck</str>
+    </arr>
   </requestHandler>
 
   <!-- Note how you can register the same handler multiple times with
@@ -657,18 +668,19 @@
 
     <lst name="spellchecker">
       <str name="name">default</str>
-      <str name="field">name</str>
+      <str name="field">spell</str>
       <str name="spellcheckIndexDir">./spellchecker</str>
+      <str name="buildOnOptimize">true</str>
     </lst>
 
-    <!-- a spellchecker that uses a different distance measure
+    <!-- a spellchecker that uses a different distance measure -->
     <lst name="spellchecker">
       <str name="name">jarowinkler</str>
       <str name="field">spell</str>
       <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
       <str name="spellcheckIndexDir">./spellchecker2</str>
+      <str name="buildOnOptimize">true</str>
     </lst>
-     -->
 
     <!-- a file based spell checker
     <lst name="spellchecker">
@@ -681,6 +693,8 @@
     -->
   </searchComponent>
 
+  <queryConverter name="queryConverter" class="solr.SpellingQueryConverter"/>
+
   <!-- A request handler utilizing the spellcheck component.
   #############################################################################
   NOTE: This is purely as an example.  The whole purpose of the
