Commit 3550ad23 by nnnghia98

refactoring queries code

parent cb872093
......@@ -3,23 +3,20 @@ class JobsController < ApplicationController
before_action :find_user, only: :apply_available
def index
@search = params[:search] || ":"
@solr = SolrService.new
@search = params[:search] || params[:city_id] || params[:industry_id] || ":"
solr = SolrService.new(@search)
if params[:city_id]
@city = City.find(params[:city_id])
@city_name = @city.name
@jobs = @solr.query_by_city(@city_name)["docs"]
@jobs_count = @solr.query_by_city(@city_name)["numFound"]
@jobs = solr.query_by_city["docs"]
@jobs_count = solr.query_by_city["numFound"]
elsif params[:industry_id]
@industry = Industry.find(params[:industry_id])
@industry_name = @industry.name
@jobs = @solr.query_by_industry(@industry_name)["docs"]
@jobs_count = @solr.query_by_industry(@industry_name)["numFound"]
@jobs = solr.query_by_industry["docs"]
@jobs_count = solr.query_by_industry["numFound"]
else
@jobs = @solr.search(@search)["docs"]
@jobs_count = @solr.search(@search)["numFound"]
@jobs = solr.query_all["docs"]
@jobs_count = solr.query_all["numFound"]
end
@jobs = Kaminari.paginate_array(@jobs).page(params[:page]).per(Settings.job.per_page)
end
......
......@@ -4,7 +4,7 @@ module JobHelper
end
def view_search_result
params[:city_id] ? "City: #{@city.name}" :
(params[:industry_id] ? "Industry: #{@industry.name}" : params[:search])
params[:city_id] ? "City: #{@jobs[0]["city"]}" :
(params[:industry_id] ? "Industry: #{@jobs[0]["industry"]}" : params[:search])
end
end
......@@ -2,13 +2,15 @@ require "rsolr"
require 'benchmark'
class SolrService
def initialize
def initialize(search_keyword)
@solr = RSolr.connect(
url: Settings.solr.connection.server_url,
read_timeout: Settings.solr.connection.read_timeout,
open_timeout: Settings.solr.connection.open_timeout,
retry_503: Settings.solr.connection.retry_503
)
@search_keyword = search_keyword
end
def add_data
......@@ -47,29 +49,37 @@ class SolrService
@solr.commit
end
def search(params)
response = @solr.get "select", params: {
q: "*#{params}*",
rows: Job.count
}
response["response"]
def query_all
q = "*#{@search_keyword}*"
fq = ""
send_request(q, fq)
end
def query_by_city(city_name)
city = "city: #{escape_str(city_name)}"
response = @solr.get "select", params: {
q: "*:*",
fq: city,
rows: Job.count
}
response["response"]
def query_by_city
city = City.find(@search_keyword)
@city_name = city.name
q = "*:*"
fq = "city: #{escape_str(@city_name)}"
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
def query_by_industry(industry_name)
industry = "industry: #{escape_str(industry_name)}"
def send_request(q, fq)
response = @solr.get "select", params: {
q: "*:*",
fq: industry,
q: q,
fq: fq,
rows: Job.count
}
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