From c36bdf0779f64a00cac9377ee670b78d28b0c20f Mon Sep 17 00:00:00 2001
From: Mateus Rambo Strey <mars11@inf.ufpr.br>
Date: Mon, 1 Feb 2016 19:37:27 -0200
Subject: [PATCH] add elasticsearch autocomplete

---
 app/assets/javascripts/application/autocomplete.js |  2 +-
 app/controllers/search_controller.rb               | 14 ++++++--------
 app/models/learning_object.rb                      |  2 +-
 3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/app/assets/javascripts/application/autocomplete.js b/app/assets/javascripts/application/autocomplete.js
index 8e42ea9a6..6d532090f 100644
--- a/app/assets/javascripts/application/autocomplete.js
+++ b/app/assets/javascripts/application/autocomplete.js
@@ -4,7 +4,7 @@ $(document).ready(function() {
 		source: function (request, response) {
 			$.ajax({
 				url: "/autocomplete",
-				data: { q: request.term },
+				data: { query: request.term },
 				dataType: "json",
 				success: response,
 				error: function () {
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index a4a001fba..70e9f5b69 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -18,14 +18,12 @@ class SearchController < ApplicationController
   end
 
   def autocomplete
-    begin
-      auto = AutocompleteService.new
-      query = params['q'] || ''
-      json_data = auto.query(query)
-      render text: json_data
-    rescue
-      render text: '[]'
-    end
+    render json: LearningObject.search(params[:query], {
+      fields: ['name^5', 'author'],
+      limit: 10,
+      load: false,
+      misspellings: { below: 5 }
+    }).map(&:name)
   end
 
   private
diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb
index cadcdf4eb..0deef6226 100644
--- a/app/models/learning_object.rb
+++ b/app/models/learning_object.rb
@@ -12,7 +12,7 @@ class LearningObject < ActiveRecord::Base
 
   belongs_to :publisher, polymorphic: true
 
-  searchkick language: "brazilian"
+  searchkick language: 'brazilian', searchable: [:name, :description, :author, :object_type]
 
   def search_data
     {
-- 
GitLab