diff --git a/apachesolr_stats.module b/apachesolr_stats.module
index b8114a0..cbcad8f 100644
--- a/apachesolr_stats.module
+++ b/apachesolr_stats.module
@@ -192,7 +192,7 @@ function apachesolr_stats_exit() {
       'process_time' => $response->debug->timing->process->time,
       'page' => isset($_GET['page']) ? $_GET['page'] : '',
       'keywords' => $query->getParam('q'),
-      'filters' => serialize($query->getFilters()),
+      'filters' => serialize(apachesolr_stats_get_active_facets($query->getSearcher())),
       'sort' => serialize($query->getSolrsort()),
     ))
     ->execute();
@@ -217,6 +217,29 @@ function apachesolr_stats_exit() {
 }
 
 /**
+ * Gets the searcher's active facets from Facet API.
+ *
+ * @param $searcher The machine name of the searcher.
+ *
+ * @return array
+ *   An array keyed by facet name to value.
+ */
+function apachesolr_stats_get_active_facets($searcher) {
+  $filters = array();
+  if (function_exists('facetapi_adapter_load')) {
+    if ($adapter = facetapi_adapter_load($searcher)) {
+      $active = $adapter->getAllActiveItems();
+      foreach ($active as $filter) {
+        foreach ($filter['facets'] as $facet_name) {
+          $filters[$facet_name] = $filter['value'];
+        }
+      }
+    }
+  }
+  return $filters;
+}
+
+/**
  * Callback function that outputs an XML description for a Google Gadget
  * and terminates PHP execution.
  *
@@ -557,22 +580,6 @@ function apachesolr_stats_cron() {
 }
 
 /**
- * Determine the facet field from the filter name used in a query.
- *
- * @return string
- *   The facet field id.
- */
-function apachesolr_stats_determine_field_from_query($filter_name) {
-  // TODO: Is this an exhaustive list?
-  switch ($filter_name) {
-    case 'is_uid':
-      return 'author';
-    default:
-      return $filter_name;
-  }
-}
-
-/**
  * Returns a themed table for facet usage
  * @param array $facets
  *   An array of calculated data to report.
@@ -791,16 +798,12 @@ function apachesolr_stats_generate_report_elements($granularity) {
     // Field usage; only when on first results page (meaning it's a fresh search)
     if ($record->page == "") {
       $facet_processed_flag = array();
-      foreach (unserialize($record->filters) as $filter) {
-        $fieldname = apachesolr_stats_determine_field_from_query($filter['#name']);
-        if ($fieldname != false && isset($facets[$fieldname])) {
-          // Count this facet field only once per query
-          if (!isset($facet_processed_flag[$fieldname])) {
-            // Add 1 to usage of term from vocabulary
-            $facets[$fieldname]['usage']++;
-            // Mark so we don't count it again for this query
-            $facet_processed_flag[$fieldname] = true;
-          }
+      foreach (unserialize($record->filters) as $facet_name => $facet_value) {
+        if (isset($facets[$facet_name]) && !isset($facet_processed_flag[$facet_name])) {
+          // Add 1 to usage of facet.
+          $facets[$facet_name]['usage']++;
+          // Mark so we don't count it again for this query.
+          $facet_processed_flag[$facet_name] = TRUE;
         }
       }
 
