diff --git handlers/views_handler_filter.inc handlers/views_handler_filter.inc
index a5e3208..ae43da2 100644
--- handlers/views_handler_filter.inc
+++ handlers/views_handler_filter.inc
@@ -51,6 +51,8 @@ class views_handler_filter extends views_handler {
     $options['expose'] = array(
       'contains' => array(
         'operator' => array('default' => FALSE),
+        'limit_operators' => array('default' => FALSE),
+        'available_operators' => array('default' => array()),
         'label' => array('default' => '', 'translatable' => TRUE),
         'use_operator' => array('default' => 0),
         'operator' => array('default' => ''),
@@ -116,7 +118,16 @@ class views_handler_filter extends views_handler {
     $this->operator_submit($form, $form_state);
     $this->value_submit($form, $form_state);
     if (!empty($this->options['exposed'])) {
+      if (!empty($form_state['values']['options']['expose']['limit_operators'])) {
+        $form_state['values']['options']['expose']['available_operators'] = array_filter($form_state['values']['options']['expose']['available_operators']);
+      }
+      else {
+        $form_state['values']['options']['expose']['available_operators'] = array();
+      }
       $this->expose_submit($form, $form_state);
+      if (empty($form_state['values']['options']['expose']['use_operator'])) {
+        $form_state['values']['options']['expose']['limit_operators'] = array();
+      }
     }
   }
 
@@ -138,6 +149,14 @@ class views_handler_filter extends views_handler {
   function operator_form(&$form, &$form_state) {
     $options = $this->operator_options();
     if (!empty($options)) {
+      $limit = array_filter($this->options['expose']['available_operators']);
+      if (!empty($this->options['expose']['limit_operators']) && count($limit)) {
+        foreach ($options as $key => $value) {
+          if (!isset($limit[$key])) {
+            unset($options[$key]);
+          }
+        }
+      }
       $form['operator'] = array(
         '#type' => count($options) < 10 ? 'radios' : 'select',
         '#title' => t('Operator'),
@@ -216,6 +235,33 @@ class views_handler_filter extends views_handler {
           'edit-options-expose-use-operator' => array(1)
         ),
       );
+      $form['expose']['limit_operators'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Limit operators'),
+        '#description' => t('When checked, the operator will be exposed to the user'),
+        '#default_value' => !empty($this->options['expose']['limit_operators']),
+        '#process' => array('views_process_dependency'),
+        '#dependency' => array(
+          'edit-options-expose-use-operator' => array(1)
+        ),
+        '#description' => t('Restrict which operators will be available to select in the exposed operator form.'),
+      );
+      $operator_options = $this->operator_options();
+      if (count($operator_options)) {
+        $form['expose']['available_operators'] = array(
+          '#type' => 'checkboxes',
+          '#title' => t('Limit the exposed operators'),
+          '#default_value' => $this->options['expose']['available_operators'],
+          '#prefix' => '<div id="edit-options-expose-available-operators-wrapper"><div id = "edit-options-expose-available-operators">',
+          '#suffix' => '</div></div>',
+          '#description' => t('Select which operators will be available to select in the exposed operator form. If none is selected, all the operators listed here will be used.'),
+          '#options' => $operator_options,
+          '#process' => array('expand_checkboxes', 'views_process_dependency'),
+          '#dependency' => array(
+            'edit-options-expose-limit-operators' => array(1)
+          ),
+        );
+      }
     }
     else {
       $form['expose']['operator'] = array(
diff --git handlers/views_handler_filter_numeric.inc handlers/views_handler_filter_numeric.inc
index 2770e3b..1e34ce5 100644
--- handlers/views_handler_filter_numeric.inc
+++ handlers/views_handler_filter_numeric.inc
@@ -126,23 +126,52 @@ class views_handler_filter_numeric extends views_handler_filter {
     // not rendered, we can't render dependencies; instead we only
     // render the form items we need.
     $which = 'all';
+    $limit_operators = !empty($this->options['expose']['limit_operators']) && (count($this->options['expose']['available_operators']) > 0);
+    $use_value = FALSE;
+    $use_minmax = FALSE;
     if (!empty($form['operator'])) {
       $source = ($form['operator']['#type'] == 'radios') ? 'radio:options[operator]' : 'edit-options-operator';
     }
 
     if (!empty($form_state['exposed'])) {
+      $operator_values_with_1_value = $this->operator_values(1);
+      $operator_values_with_2_values = $this->operator_values(2);
+      if ($limit_operators) {
+        // If limit operators is enabled, check that at least one operator
+        // with two values is enabled to display the min max widgets
+        foreach ($operator_values_with_2_values as $operator) {
+          if (isset($this->options['expose']['available_operators'][$operator])) {
+            $use_minmax = TRUE;
+            break;
+          }
+        }
+        // the same for operators with one value
+        foreach ($operator_values_with_1_value as $operator) {
+          if (isset($this->options['expose']['available_operators'][$operator])) {
+            $use_value = TRUE;
+            break;
+          }
+        }
+      }
+      else {
+        $use_minmax = $use_value = TRUE;
+      }
+
       $identifier = $this->options['expose']['identifier'];
 
       if (empty($this->options['expose']['use_operator']) || empty($this->options['expose']['operator'])) {
         // exposed and locked.
-        $which = in_array($this->operator, $this->operator_values(2)) ? 'minmax' : 'value';
+        $which = in_array($this->operator, $operator_values_with_2_values) ? 'minmax' : 'value';
       }
       else {
         $source = 'edit-' . form_clean_id($this->options['expose']['operator']);
       }
     }
+    else {
+      $use_minmax = $use_value = TRUE;
+    }
 
-    if ($which == 'all') {
+    if ($which == 'all' && $use_value) {
       $form['value']['value'] = array(
         '#type' => 'textfield',
         '#title' => empty($form_state['exposed']) ? t('Value') : '',
@@ -155,7 +184,7 @@ class views_handler_filter_numeric extends views_handler_filter {
         $form_state['input'][$identifier]['value'] = $this->value['value'];
       }
     }
-    else if ($which == 'value') {
+    else if ($which == 'value' && $use_value) {
       // When exposed we drop the value-value and just do value if
       // the operator is locked.
       $form['value'] = array(
@@ -170,30 +199,34 @@ class views_handler_filter_numeric extends views_handler_filter {
     }
 
     if ($which == 'all' || $which == 'minmax') {
-      $form['value']['min'] = array(
-        '#type' => 'textfield',
-        '#title' => empty($form_state['exposed']) ? t('Min') : '',
-        '#size' => 30,
-        '#default_value' => $this->value['min'],
-      );
-      $form['value']['max'] = array(
-        '#type' => 'textfield',
-        '#title' => empty($form_state['exposed']) ? t('And max') : t('And'),
-        '#size' => 30,
-        '#default_value' => $this->value['max'],
-      );
+      if ($use_minmax) {
+        $form['value']['min'] = array(
+          '#type' => 'textfield',
+          '#title' => empty($form_state['exposed']) ? t('Min') : '',
+          '#size' => 30,
+          '#default_value' => $this->value['min'],
+        );
+        $form['value']['max'] = array(
+          '#type' => 'textfield',
+          '#title' => empty($form_state['exposed']) ? t('And max') : t('And'),
+          '#size' => 30,
+          '#default_value' => $this->value['max'],
+        );
+      }
       if ($which == 'all') {
         $dependency = array(
           '#process' => array('views_process_dependency'),
           '#dependency' => array($source => $this->operator_values(2)),
         );
-        $form['value']['min'] += $dependency;
-        $form['value']['max'] += $dependency;
+        if ($use_minmax) {
+          $form['value']['min'] += $dependency;
+          $form['value']['max'] += $dependency;
+        }
       }
-      if (!empty($form_state['exposed']) && !isset($form_state['input'][$identifier]['min'])) {
+      if (!empty($form_state['exposed']) && !isset($form_state['input'][$identifier]['min']) && $use_minmax) {
         $form_state['input'][$identifier]['min'] = $this->value['min'];
       }
-      if (!empty($form_state['exposed']) && !isset($form_state['input'][$identifier]['max'])) {
+      if (!empty($form_state['exposed']) && !isset($form_state['input'][$identifier]['max']) && $use_minmax) {
         $form_state['input'][$identifier]['max'] = $this->value['max'];
       }
 
diff --git modules/search/views_handler_filter_search.inc modules/search/views_handler_filter_search.inc
index a87cd27..a7736c8 100644
--- modules/search/views_handler_filter_search.inc
+++ modules/search/views_handler_filter_search.inc
@@ -14,19 +14,19 @@ class views_handler_filter_search extends views_handler_filter {
     return $options;
   }
 
+  function operator_options() {
+    return array(
+      'optional' => t('Show All'),
+      'required' => t('Show None'),
+    );
+  }
+
   /**
    * Provide simple equality operator
    */
   function operator_form(&$form, &$form_state) {
-    $form['operator'] = array(
-      '#type' => 'radios',
-      '#title' => t('On empty input'),
-      '#default_value' => $this->operator,
-      '#options' => array(
-        'optional' => t('Show All'),
-        'required' => t('Show None'),
-      ),
-    );
+    parent::operator_form($form, $form_state);
+    $form['operator']['#title'] = t('On empty input');
   }
 
   /**
diff --git modules/translation/views_handler_filter_node_tnid.inc modules/translation/views_handler_filter_node_tnid.inc
index b99e97a..8d2e2a0 100644
--- modules/translation/views_handler_filter_node_tnid.inc
+++ modules/translation/views_handler_filter_node_tnid.inc
@@ -13,19 +13,19 @@ class views_handler_filter_node_tnid extends views_handler_filter {
     return $options;
   }
 
+  function operator_options() {
+    return array(
+        1 => t('Yes'),
+        0 => t('No'),
+    );
+  }
+
   /**
    * Provide simple boolean operator
    */
   function operator_form(&$form, &$form_state) {
-    $form['operator'] = array(
-      '#type' => 'radios',
-      '#title' => t('Include untranslated nodes'),
-      '#default_value' => $this->operator,
-      '#options' => array(
-        1 => t('Yes'),
-        0 => t('No'),
-      ),
-    );
+    parent::options_form($form, $form_state);
+    $form['operator']['#title'] = t('Include untranslated nodes');
   }
 
   function can_expose() { return FALSE; }
