diff --git README.txt README.txt
index 7349e5c..9c959a3 100644
--- README.txt
+++ README.txt
@@ -28,6 +28,9 @@ Regarding third-party features, this module supports the "search_api_facets"
 feature, introduced by the module of the same name. This lets you create
 facetted searches for any index lying on a Solr server.
 
+The "search_api_spellcheck" feature/module is supported, which allows spellcheck
+suggestions from Solr to be viewed for searches.
+
 Also supported is the "search_api_multi" feature (likewise introduced by the
 module of the same name) which allows multiple indexes lying on a single Solr
 server to be searched simultaneously.
diff --git includes/SearchApiSpellcheckSolr.inc includes/SearchApiSpellcheckSolr.inc
new file mode 100644
index 0000000..3e89ce0
--- /dev/null
+++ includes/SearchApiSpellcheckSolr.inc
@@ -0,0 +1,33 @@
+<?php
+/**
+ * @file
+ * Contains the SearchApiSpellcheckSolr class.
+ */
+
+/**
+ * Spellcheck class which can provide spelling suggestions. The constructor
+ * populates the instance with any suggestions returned by Solr.
+ */
+class SearchApiSpellcheckSolr extends SearchApiSpellcheck {
+
+  /**
+   * Constructor.
+   *
+   * If solr has returned spelling suggestion then loop through them and add
+   * them to this spellcheck service.
+   *
+   * @param Apache_Solr_Response $response
+   *   The Solr response object.
+   */
+  function __construct(Apache_Solr_Response $response) {
+    if (isset($response->spellcheck->suggestions)) {
+      $suggestions = $response->spellcheck->suggestions;
+      foreach ($suggestions as $word => $data) {
+        foreach ($data->suggestion as $suggestion) {
+          $this->addSuggestion(new SearchApiSpellcheckSuggestion($word, $suggestion));
+        }
+      }
+    }
+  }
+
+}
diff --git schema.xml schema.xml
index 58d4dfe..3e40fdb 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..c1d38f4 100644
--- service.inc
+++ service.inc
@@ -130,7 +130,12 @@ class SearchApiSolrService extends SearchApiAbstractService {
   }
 
   public function supportsFeature($feature) {
-    return $feature == 'search_api_facets' || $feature == 'search_api_multi';
+    $supported = drupal_map_assoc(array(
+      'search_api_facets',
+      'search_api_multi',
+      'search_api_spellcheck',
+    ));
+    return isset($supported[$feature]);
   }
 
   /**
@@ -444,6 +449,9 @@ class SearchApiSolrService extends SearchApiAbstractService {
     if (!empty($facet_params['facet.field'])) {
       $params += $facet_params;
     }
+    if (!empty($options['search_api_spellcheck'])) {
+      $params['spellcheck'] = 'true';
+    }
     $call_args = array(
       'query'  => &$keys,
       'offset' => &$offset,
@@ -547,6 +555,11 @@ class SearchApiSolrService extends SearchApiAbstractService {
       }
     }
 
+    // Check for spellcheck suggestions.
+    if (module_exists('search_api_spellcheck') && $query->getOption('search_api_spellcheck')) {
+      $results['search_api_spellcheck'] = new SearchApiSpellcheckSolr($response);
+    }
+
     return $results;
   }
 
diff --git solrconfig.xml solrconfig.xml
index 58d1d5f..809b704 100644
--- solrconfig.xml
+++ solrconfig.xml
@@ -494,7 +494,18 @@
       <str name="fl">item_id,score</str>
       <str name="q.op">AND</str>
       <str name="q.alt">*:*</str>
+
+      <!-- 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>
 
 <!-- Please refer to http://wiki.apache.org/solr/SolrReplication for details on configuring replication -->
@@ -557,7 +568,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 +679,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 +704,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
