diff --git a/schema.xml b/schema.xml
index 58d4dfe..a61158e 100644
--- a/schema.xml
+++ b/schema.xml
@@ -345,13 +345,13 @@
-->
-
+
-
-
+
+
-
-
+
+
@@ -359,13 +359,13 @@
-
-
-
+
+
+
-
-
+
+
diff --git a/service.inc b/service.inc
index ad04aa1..20dc2b8 100644
--- a/service.inc
+++ b/service.inc
@@ -130,7 +130,8 @@ class SearchApiSolrService extends SearchApiAbstractService {
}
public function supportsFeature($feature) {
- return $feature == 'search_api_facets' || $feature == 'search_api_multi';
+ return in_array($feature, array('search_api_facets', 'search_api_multi',
+ 'search_api_mlt'));
}
/**
@@ -983,10 +984,24 @@ class SearchApiSolrService extends SearchApiAbstractService {
if ($sort) {
$params['sort'] = implode(', ', $sort);
}
+ // handle More Like This query
+ $mlt = $query->getOption('search_api_mlt') ? $query->getOption('search_api_mlt') : FALSE;
+ if ($mlt) {
+ $params['qt'] = 'mlt';
+ // the fields to look for similarities in
+ $mlt_fl = array();
+ foreach($mlt['fields'] as $f) {
+ $mlt_fl[] = $fields[$f];
+ }
+ $params['mlt.fl'] = implode(",", $mlt_fl);
+ //disable facets
+// unset($facet_params['facet.field']);
+ $keys = 'id:' . $index->machine_name . '-' . $mlt['id'];
+
+ }
if (!empty($facet_params['facet.field'])) {
$params += $facet_params;
}
-
try {
// Send search request
$time_processing_done = microtime(TRUE);
diff --git a/solrconfig.xml b/solrconfig.xml
index 58d1d5f..246e028 100644
--- a/solrconfig.xml
+++ b/solrconfig.xml
@@ -125,7 +125,7 @@
-->
-
+
+
+
+ 1
+ 1
+ 3
+ 15
+ 20
+ false
+ item_id,score
+
+
+
+