Index: sphinxsearch.common.inc
===================================================================
--- sphinxsearch.common.inc	(revision 683)
+++ sphinxsearch.common.inc	(working copy)
@@ -348,10 +348,12 @@
  *
  * @param array $request_options
  *   Requested search options.
+ * @param $is_parsing_get
+ *   Is function used for parsing GET params or for validation purposes
  * @return array
  *   Search options structure.
  */
-function sphinxsearch_parse_request($request_options = array()) {
+function sphinxsearch_parse_request($request_options = array(), $is_parsing_get = FALSE) {
   $search_options = array(
     'matchmode' => SPHINXSEARCH_MATCH_ALL,
     'excerpts_limit' => (int)variable_get('sphinxsearch_excerpts_limit', 256),
@@ -426,12 +428,24 @@
     foreach (sphinxsearch_get_enabled_vocabularies() as $vid => $vocabulary) {
       $terms_key = 'terms'. $vid;
       if (!empty($request_options[$terms_key])) {
-        // Terms may come as an array of tids (from non-freetagging form elements), or as a string of "typed terms".
-        if (is_array($request_options[$terms_key])) {
-          $terms = sphinxsearch_taxonomy_get_terms($vid, array_filter(array_map('intval', array_keys($request_options[$terms_key]))));
+
+        // Terms are comming here from two places: GET and validation stage
+        // In case of get we always have a string with term names, so as with
+        // tag vocabulary. So we can handlw those cases simultaneously
+        if (($is_parsing_get) || ($vocabulary->tags)) {
+          $terms = sphinxsearch_taxonomy_decode_typed_terms($vid, $request_options[$terms_key]);
         }
+        // But if data comes from non-taged values from validation, we should treat
+        // in a special way
         else {
-          $terms = sphinxsearch_taxonomy_decode_typed_terms($vid, $request_options[$terms_key]);
+          // One for multiple-select terms list
+          if (is_array($request_options[$terms_key])) {
+            $terms = sphinxsearch_taxonomy_get_terms($vid, array_filter(array_map('intval', array_keys($request_options[$terms_key]))));
+          } else {
+            // And another one for simple term combo-box
+            $tid = $request_options[$terms_key];
+            $terms = array($tid => taxonomy_get_term($tid));
+          }
         }
 
         // Check if we got not found terms.
Index: sphinxsearch.pages.inc
===================================================================
--- sphinxsearch.pages.inc	(revision 685)
+++ sphinxsearch.pages.inc	(working copy)
@@ -24,7 +24,7 @@
   }
 
   // Parse request and build search options structure.
-  $search_options = sphinxsearch_parse_request($_GET);
+  $search_options = sphinxsearch_parse_request($_GET, TRUE);
 
   // If any error was found in request, display them and render expanded search form.
   if (!empty($search_options['errors'])) {