diff --git a/facetapi_taxonomy_sort.module b/facetapi_taxonomy_sort.module
index ee79ba2..a1ea5b1 100644
--- a/facetapi_taxonomy_sort.module
+++ b/facetapi_taxonomy_sort.module
@@ -7,14 +7,21 @@
 /**
  * Tests whether a field is a term reference field.
  *
- * @param $field_name
- *   The machine readable name of the field.
+ * @param array $facet
+ *   The facet definition as returned by facetapi_facet_load().
  *
  * @return
  *   TRUE if the field is a term reference field.
  */
-function facetapi_taxonomy_sort_is_term_reference_field($field_type) {
-  return $field_type == 'taxonomy_term';
+function facetapi_taxonomy_sort_is_term_reference_field(array $facet) {
+  if ($facet['field api name'] && ($field_info = field_info_field($facet['field api name']))) {
+    return ('taxonomy_term_reference' == $field_info['type']);
+  }
+  else {
+    // For Search API, fall back to the field type key.
+    // @see http://drupal.org/node/1377734
+    return isset($facet['field type']) && 'taxonomy_term' == $facet['field type'];
+  }
 }
 
 /**
@@ -23,7 +30,7 @@ function facetapi_taxonomy_sort_is_term_reference_field($field_type) {
 function facetapi_taxonomy_sort_facetapi_facet_info_alter(array &$facet_info, array $searcher_info) {
   foreach ($facet_info as $name => $facet) {
     // Only act on taxonomy term reference fields.
-    if (facetapi_taxonomy_sort_is_term_reference_field($facet['field type'])) {
+    if (facetapi_taxonomy_sort_is_term_reference_field($facet)) {
       $facet_info[$name]['alter callbacks'][] = 'facetapi_taxonomy_sort_add_taxonomy_weights';
     }
   }
@@ -71,7 +78,7 @@ function facetapi_taxonomy_sort_facetapi_sort_info() {
  *   TRUE if the hierarchical status matches $option, FALSE otherwise.
  */
 function facetapi_taxonomy_sort_is_taxonomy_facet(array $realm, array $facet, $option) {
-  $is_taxonomy_facet = facetapi_taxonomy_sort_is_term_reference_field($facet['field type']);
+  $is_taxonomy_facet = facetapi_taxonomy_sort_is_term_reference_field($facet);
   return ($option) ? $is_taxonomy_facet : !$is_taxonomy_facet;
 }
 
