diff --git a/contrib/search_api_views/includes/handler_argument_more_like_this.inc b/contrib/search_api_views/includes/handler_argument_more_like_this.inc
new file mode 100644
index 0000000..21cd6f5
--- /dev/null
+++ b/contrib/search_api_views/includes/handler_argument_more_like_this.inc
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * Views argument handler class for handling the more like thsi feature of a
+ * (solr) server.
+ */
+class SearchApiViewsHandlerArgumentMoreLikeThis extends SearchApiViewsHandlerArgument {
+  /** @TODO there must be a place to specify what sort of argument this handler
+    expects. AT the moment we silently and implicitly expect a node id as
+    argument
+  **/
+
+  /**
+   * Get the title this argument will assign the view, given the argument.
+   *
+   * This usually needs to be overridden to provide a proper title.
+   */
+  /** @TODO set the title to something like More like title of argument??
+  public function title() {
+    return t('Search for "@arg"', array('@field' => $this->definition['title'], '@arg' => $this->argument));
+  }
+  **/
+  /**
+   * Specify the options this filter uses.
+   */
+  public function option_definition() {
+    $options = parent::option_definition();
+    $options['fields'] = array('default' => array());
+    return $options;
+  }
+
+  /**
+   * Extend the options form a bit.
+   */
+  public function options_form(array &$form, array &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $index = search_api_index_load(substr($this->table, 17));
+    if (!empty($index->options['fields'])) {
+      $fields = array();
+      foreach ($index->options['fields'] as $key => $field) {
+        if ($field['indexed']) {
+          $fields[$key] = $field['name'];
+        }
+      }
+    }
+    if (!empty($fields)) {
+      $form['fields'] = array(
+        '#type' => 'select',
+        '#title' => t('Fields for Similarity'),
+        '#description' => t('Select the fields that will be used for finding similar content. If no fields are selected, all available fields will be used.'),
+        '#options' => $fields,
+        '#multiple' => TRUE,
+        '#default_value' => $this->options['fields'],
+      );
+    }
+    else {
+      $form['fields'] = array(
+        '#type' => 'value',
+        '#value' => array(),
+      );
+    }
+  }
+
+  /**
+   * Set up the query for this argument.
+   *
+   * The argument sent may be found at $this->argument.
+   */
+  public function query() {
+    $server = search_api_server_load($this->query->getIndex()->server);
+    if (!$server->supportsFeature("search_api_mlt")) {
+      throw new SearchApiException(t('The search service "!class" does not '
+        . ' offer More-Like-This functionality',
+        array('!class' => $server->class)));
+      return;
+    }
+    $fields = $this->options['fields'] ? $this->options['fields'] : array();
+    if (empty($fields)) {
+      foreach($this->query->getIndex()->options['fields'] as $key => $field) {
+        if ($field['indexed']) {
+          $fields[] = $key;
+        }
+      }
+    }
+    $mlt = array(
+      'id' => $this->argument,
+      'fields' => $fields,
+    );
+    $this->query->getSearchApiQuery()->setOption("search_api_mlt", $mlt);
+  }
+}
diff --git a/contrib/search_api_views/includes/query.inc b/contrib/search_api_views/includes/query.inc
index a064c1f..3658ade 100644
--- a/contrib/search_api_views/includes/query.inc
+++ b/contrib/search_api_views/includes/query.inc
@@ -124,7 +124,7 @@ class SearchApiViewsQuery extends views_plugin_query {
       // Add range and search ID (if it wasn't already set).
       $this->query->range($this->offset, $this->limit);
       if ($this->query->getOption('search id') == get_class($this->query)) {
-        $this->query->setOption('search id', 'search_api_views:' . $view->name);
+        $this->query->setOption('search id', 'search_api_views:' . $view->name . ':' . $view->current_display);
       }
 
       // Execute the search.
diff --git a/contrib/search_api_views/search_api_views.info b/contrib/search_api_views/search_api_views.info
index c77da3b..247e02e 100644
--- a/contrib/search_api_views/search_api_views.info
+++ b/contrib/search_api_views/search_api_views.info
@@ -11,6 +11,7 @@ files[] = includes/display_facet_block.inc
 files[] = includes/handler_argument.inc
 files[] = includes/handler_argument_fulltext.inc
 files[] = includes/handler_argument_text.inc
+files[] = includes/handler_argument_more_like_this.inc
 files[] = includes/handler_field.inc
 files[] = includes/handler_field_boolean.inc
 files[] = includes/handler_field_date.inc
diff --git a/contrib/search_api_views/search_api_views.views.inc b/contrib/search_api_views/search_api_views.views.inc
index 1a5e9c1..eeccc94 100644
--- a/contrib/search_api_views/search_api_views.views.inc
+++ b/contrib/search_api_views/search_api_views.views.inc
@@ -167,6 +167,12 @@ function search_api_views_views_data() {
     $table['search_api_views_fulltext']['type'] = 'text';
     $table['search_api_views_fulltext']['filter']['handler'] = 'SearchApiViewsHandlerFilterFulltext';
     $table['search_api_views_fulltext']['argument']['handler'] = 'SearchApiViewsHandlerArgumentFulltext';
+
+    $table['search_api_views_more_like_this']['group'] = t('Search');
+    $table['search_api_views_more_like_this']['title'] = t('More Like This');
+    $table['search_api_views_more_like_this']['help'] = t('Find similar content.');
+    $table['search_api_views_more_like_this']['type'] = 'text';
+    $table['search_api_views_more_like_this']['argument']['handler'] = 'SearchApiViewsHandlerArgumentMoreLikeThis';
   }
   return $data;
 }
