Commit 3550ad23 by nnnghia98

refactoring queries code

parent cb872093
...@@ -3,23 +3,20 @@ class JobsController < ApplicationController ...@@ -3,23 +3,20 @@ class JobsController < ApplicationController
before_action :find_user, only: :apply_available before_action :find_user, only: :apply_available
def index def index
@search = params[:search] || ":" @search = params[:search] || params[:city_id] || params[:industry_id] || ":"
@solr = SolrService.new solr = SolrService.new(@search)
if params[:city_id] if params[:city_id]
@city = City.find(params[:city_id]) @jobs = solr.query_by_city["docs"]
@city_name = @city.name @jobs_count = solr.query_by_city["numFound"]
@jobs = @solr.query_by_city(@city_name)["docs"]
@jobs_count = @solr.query_by_city(@city_name)["numFound"]
elsif params[:industry_id] elsif params[:industry_id]
@industry = Industry.find(params[:industry_id]) @jobs = solr.query_by_industry["docs"]
@industry_name = @industry.name @jobs_count = solr.query_by_industry["numFound"]
@jobs = @solr.query_by_industry(@industry_name)["docs"]
@jobs_count = @solr.query_by_industry(@industry_name)["numFound"]
else else
@jobs = @solr.search(@search)["docs"] @jobs = solr.query_all["docs"]
@jobs_count = @solr.search(@search)["numFound"] @jobs_count = solr.query_all["numFound"]
end end
@jobs = Kaminari.paginate_array(@jobs).page(params[:page]).per(Settings.job.per_page) @jobs = Kaminari.paginate_array(@jobs).page(params[:page]).per(Settings.job.per_page)
end end
......
...@@ -4,7 +4,7 @@ module JobHelper ...@@ -4,7 +4,7 @@ module JobHelper
end end
def view_search_result def view_search_result
params[:city_id] ? "City: #{@city.name}" : params[:city_id] ? "City: #{@jobs[0]["city"]}" :
(params[:industry_id] ? "Industry: #{@industry.name}" : params[:search]) (params[:industry_id] ? "Industry: #{@jobs[0]["industry"]}" : params[:search])
end end
end end
...@@ -2,13 +2,15 @@ require "rsolr" ...@@ -2,13 +2,15 @@ require "rsolr"
require 'benchmark' require 'benchmark'
class SolrService class SolrService
def initialize def initialize(search_keyword)
@solr = RSolr.connect( @solr = RSolr.connect(
url: Settings.solr.connection.server_url, url: Settings.solr.connection.server_url,
read_timeout: Settings.solr.connection.read_timeout, read_timeout: Settings.solr.connection.read_timeout,
open_timeout: Settings.solr.connection.open_timeout, open_timeout: Settings.solr.connection.open_timeout,
retry_503: Settings.solr.connection.retry_503 retry_503: Settings.solr.connection.retry_503
) )
@search_keyword = search_keyword
end end
def add_data def add_data
...@@ -47,29 +49,37 @@ class SolrService ...@@ -47,29 +49,37 @@ class SolrService
@solr.commit @solr.commit
end end
def search(params) def query_all
response = @solr.get "select", params: { q = "*#{@search_keyword}*"
q: "*#{params}*", fq = ""
rows: Job.count
} send_request(q, fq)
response["response"]
end end
def query_by_city(city_name) def query_by_city
city = "city: #{escape_str(city_name)}" city = City.find(@search_keyword)
response = @solr.get "select", params: { @city_name = city.name
q: "*:*",
fq: city, q = "*:*"
rows: Job.count fq = "city: #{escape_str(@city_name)}"
}
response["response"] send_request(q, fq)
end
def query_by_industry
industry = Industry.find(@search_keyword)
@industry_name = industry.name
q = "*:*"
fq = "city: #{escape_str(@industry_name)}"
send_request(q, fq)
end end
def query_by_industry(industry_name) def send_request(q, fq)
industry = "industry: #{escape_str(industry_name)}"
response = @solr.get "select", params: { response = @solr.get "select", params: {
q: "*:*", q: q,
fq: industry, fq: fq,
rows: Job.count rows: Job.count
} }
response["response"] response["response"]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment