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 + + + +