diff --git a/app/assets/javascripts/application/search.js b/app/assets/javascripts/application/search.js
index d13ca48ccbed119c828dcb9aa21af0722d9f1c10..c6c99f43eae65d2b3488ab1d1659088d6360e8d8 100644
--- a/app/assets/javascripts/application/search.js
+++ b/app/assets/javascripts/application/search.js
@@ -18,7 +18,7 @@ var search = function() {
     $.ajax({
       url:"/search/fetch",
       type: 'get',
-      data: params.get(),
+      data: params.get_fetch(),
       beforeSend: function() {
         if (append) {
           $('.search-more').remove();
@@ -267,6 +267,13 @@ var searchParameters = function() {
       }
       return params[type];
     },
+    get_fetch: function() {
+      var params_to_send = JSON.parse(JSON.stringify(params));
+      params_to_send.subject = params_to_send.subject.join(', ');
+      params_to_send.type = params_to_send.type.join(', ');
+      params_to_send.school_year = params_to_send.school_year.join(', ');
+      return params_to_send;
+    },
     url: function() {
       var url = history.state.url.split('?', 1) + "?",
           keys = Object.keys(params),
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 06c3c5104b2cc3332c3e191e06fbf11a889c7c4e..7ba640079c6e661adddb6fc044de222bf98efb89 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -7,6 +7,9 @@ class SearchController < ApplicationController
   def fetch
     objectsFound = []
 
+    params[:subject]= params[:subject].split(', ')
+    params[:type] = params[:type].split(', ')
+    params[:school_year] = params[:school_year].split(', ')
     page=1
     if (params[:page])
       page = params[:page].to_i
@@ -15,9 +18,7 @@ class SearchController < ApplicationController
     @pagination_limit=10
 
     unless params[:query].blank?
-      params[:order] = "" if params[:order].blank?
-
-      objectsFound = search params[:query], params[:order]
+      objectsFound = search params
       @numFound = objectsFound.length
 
       # case params[:order]
diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb
index 7df9209424900ae657f49a7a62e5c6b224007e81..d126c700966b8887d53a317d798a4e3e0908e19c 100644
--- a/app/repositories/orient_db/learning_object_repository.rb
+++ b/app/repositories/orient_db/learning_object_repository.rb
@@ -129,27 +129,29 @@ module OrientDb
     #   ON LearningObject (name, description)
     #   FULLTEXT ENGINE LUCENE
     #   METADATA {"analyzer":"org.apache.lucene.analysis.br.BrazilianAnalyzer"}
-    def search(qry, order = nil)
+    def search(params)
       # TODO: fix search metadata from dspace
+      order = params[:order]
+      qry = params[:query]
       unless order.nil?
         order = case order
-                  when "author"
-                    "metadata.key['dc.contributor.author']"
-                  when "publicationasc"
-                    "metadata.key['dc.date.submitted']"
-                  when "publicationdesc"
-                    "metadata.key['dc.date.submitted'] DESC"
-                  when "title"
-                    "name ASC"
-                  else
-                    nil
-                end
+        when "author"
+          "author"
+        when "publicationasc"
+          "created_at"
+        when "publicationdesc"
+          "created_at DESC"
+        when "title"
+          "name ASC"
+        else
+          nil
+        end
       end
 
       query = "SELECT EXPAND(rid) FROM index:learningobject_search WHERE key LUCENE '#{qry}'"
+      query = "SELECT * FROM (" + query + ") WHERE " + fetch_types(params[:type]) unless params[:type].blank?
       query = "SELECT * FROM (" + query + ") ORDER BY #{order}" unless order.nil?
       query = "SELECT @rid.asString(), last_modified FROM (" + query + ")"
-
       learning_objects_hash = connection.query query, limit: 10000
 
       # return only rids with their modification time
@@ -172,6 +174,15 @@ module OrientDb
       hash
     end
 
+    def fetch_types(types)
+      qry = ''
+      types.each do |type|
+        qry = qry + "type = '#{type}' " if type == types.first
+        qry = qry + "OR type = '#{type}' " if type != types.first
+      end
+      qry
+    end
+
     private
 
     def accepted_properties
diff --git a/app/views/search/index.html.erb b/app/views/search/index.html.erb
index 9b24323a1c18b2cdc78ca0a63e129a0276b0be96..885dd045861c9299c6ed4567735b4f81b3bc8af9 100644
--- a/app/views/search/index.html.erb
+++ b/app/views/search/index.html.erb
@@ -22,7 +22,7 @@
           <select class="select-tag-container filter-subject" multiple="multiple">
               <option value="Conjunto">Conjuntos</option>
               <option value="Soma">Soma</option>
-              <option value="Álgebra">Álgebra</option>
+              <option value="Algebra">Álgebra</option>
           </select>
         </div>
         <h4 class="dropdown">Biologia<span class="caret caret-align-right"/></h4>
diff --git a/lib/search_engine/orientdb_lucene.rb b/lib/search_engine/orientdb_lucene.rb
index db31ac7ca01d1672a271ba7d090be6e96d357243..b260e81c3dccb944681136db64c4fb1ca0513e0d 100644
--- a/lib/search_engine/orientdb_lucene.rb
+++ b/lib/search_engine/orientdb_lucene.rb
@@ -1,8 +1,8 @@
 module SearchEngine
   module OrientdbLucene
 
-    def search(qry, order = nil)
-      learning_object_repository.search(qry, order)
+    def search(params)
+      learning_object_repository.search(params)
     end
 
   end