From d84ca25a0292cef85e42ab5120ec2b3ef4b28741 Mon Sep 17 00:00:00 2001
From: Israel Barreto Sant'Anna <ibsa14@inf.ufpr.br>
Date: Wed, 9 Dec 2015 12:00:51 -0200
Subject: [PATCH] Fixed search query

Signed-off-by: Israel Barreto Sant'Anna <ibsa14@inf.ufpr.br>
---
 app/services/search_service.rb | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/app/services/search_service.rb b/app/services/search_service.rb
index 85bf9913..edec0a6b 100644
--- a/app/services/search_service.rb
+++ b/app/services/search_service.rb
@@ -11,6 +11,7 @@ class SearchService
     # get results in cache or search
     Rails.cache.fetch(cache_key, expires_in: 10.minutes) do
       query = build_search_query params
+      p query
       @connection.query query, limit: 10000
     end
   end
@@ -28,9 +29,9 @@ class SearchService
   end
 
   def collection_query(params={})
-    qry = "SELECT *, created_at as published_at, out('BelongsTo')[0].name as author FROM Collection WHERE privacy = 'public' "
-    qry += "AND (name LUCENE '#{params[:query]}' OR description LUCENE '#{params[:query]}')" unless params[:query].blank?
-    qry_filter = params[:query].blank? ? " WHERE " : " AND "
+    qry = "SELECT *, created_at as published_at, out('BelongsTo')[0].name as author FROM Collection"
+    qry += " WHERE name LUCENE '#{params[:query]}' OR description LUCENE '#{params[:query]}'" unless params[:query].blank?
+    qry = "SELECT FROM (#{qry}) WHERE privacy = 'public'"
     filter = collection_learning_objects_filter(params)
     qry += " AND "+filter unless filter.blank?
     qry
@@ -39,15 +40,14 @@ class SearchService
   def learning_object_query(params={})
     qry = "SELECT FROM LearningObject"
     qry +=" WHERE name LUCENE '#{params[:query]}' OR description LUCENE '#{params[:query]}' OR author LUCENE '#{params[:query]}'" unless params[:query].blank?
-    qry_filter = params[:query].blank? ? " WHERE " : " AND "
     filter = learning_object_filters(params)
-    qry += qry_filter+filter unless filter.blank?
+    qry = "SELECT FROM (#{qry}) WHERE "+filter unless filter.blank?
     qry
   end
 
   def collection_learning_objects_filter(params={})
     qry = learning_object_filters(params)
-    qry = "learning_objects contains(#{qry})" unless qry.blank?
+    qry = "learning_objects CONTAINS (#{qry})" unless qry.blank?
     qry
   end
 
@@ -60,7 +60,7 @@ class SearchService
     end
     qry += " AND ("+type_filter(params[:type])+")" unless params[:type].blank?
     qry += " AND ("+year_filter(params[:year])+")" unless params[:year].blank?
-    qry[3..-1]
+    qry[5..-1]
   end
 
   def subject_filter(subjects)
-- 
GitLab