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