Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
VeNJOB
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nguyen Ngoc Nghia
VeNJOB
Commits
5cb0d3a0
Commit
5cb0d3a0
authored
Feb 18, 2020
by
nnnghia98
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
query by city/industry
parent
b7e99753
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
62 additions
and
24 deletions
+62
-24
app/controllers/jobs_controller.rb
+10
-7
app/helpers/job_helper.rb
+10
-0
app/services/solr_service.rb
+36
-4
app/views/jobs/index.html.erb
+2
-4
lib/tasks/task.rake
+4
-9
No files found.
app/controllers/jobs_controller.rb
View file @
5cb0d3a0
...
...
@@ -4,19 +4,22 @@ class JobsController < ApplicationController
def
index
@search
=
params
[
:search
]
||
":"
@solr
=
SolrService
.
new
if
params
[
:city_id
]
@city
=
City
.
find
(
params
[
:city_id
])
@jobs
=
@city
.
jobs
@jobs
=
@jobs
.
page
(
params
[
:page
]).
per
(
Settings
.
job
.
per_page
).
decorate
@city_name
=
@city
.
name
@jobs
=
@solr
.
query_by_city
(
@city_name
)[
"docs"
]
@jobs_count
=
@solr
.
query_by_city
(
@city_name
)[
"numFound"
]
elsif
params
[
:industry_id
]
@industry
=
Industry
.
find
(
params
[
:industry_id
])
@jobs
=
@industry
.
jobs
@jobs
=
@jobs
.
page
(
params
[
:page
]).
per
(
Settings
.
job
.
per_page
).
decorate
@industry_name
=
@industry
.
name
@jobs
=
@solr
.
query_by_industry
(
@industry_name
)[
"docs"
]
@jobs_count
=
@solr
.
query_by_industry
(
@industry_name
)[
"numFound"
]
else
@jobs
_count
=
SolrService
.
new
.
search
(
@search
)[
"numFound
"
]
@jobs
=
SolrService
.
new
.
search
(
@search
)[
"docs
"
]
@jobs
=
@solr
.
search
(
@search
)[
"docs
"
]
@jobs
_count
=
@solr
.
search
(
@search
)[
"numFound
"
]
end
@jobs
=
Kaminari
.
paginate_array
(
@jobs
).
page
(
params
[
:page
]).
per
(
Settings
.
job
.
per_page
)
end
...
...
app/helpers/job_helper.rb
0 → 100644
View file @
5cb0d3a0
module
JobHelper
def
view_jobs_count
(
count
)
params
[
:city_id
]
?
count
:
(
params
[
:industry_id
]
?
count
:
count
)
end
def
view_search_result
params
[
:city_id
]
?
"City:
#{
@city
.
name
}
"
:
(
params
[
:industry_id
]
?
"Industry:
#{
@industry
.
name
}
"
:
params
[
:search
])
end
end
app/services/solr_service.rb
View file @
5cb0d3a0
require
"rsolr"
require
'benchmark'
class
SolrService
def
initialize
...
...
@@ -11,7 +12,9 @@ class SolrService
end
def
add_data
jobs
=
Job
.
includes
(
:cities
,
:industries
,
:company
).
all
jobs_solr_index
=
jobs
.
map
do
|
job
|
{
id:
job
.
id
,
...
...
@@ -24,7 +27,19 @@ class SolrService
city:
job
.
cities
&
.
first
&
.
name
,
}
end
@solr
.
add
jobs_solr_index
jobs_solr_index
.
each_slice
(
5000
)
do
|
job
|
@solr
.
add
job
rescue
Exception
job
.
each
do
|
j
|
@solr
.
add
j
rescue
solr_index_error
=
ActiveSupport
::
Logger
.
new
(
"log/solr_errors.log"
)
solr_index_error
.
info
"This block got error! Cannot add job with id
#{
job
.
id
}
"
next
end
end
@solr
.
commit
end
...
...
@@ -34,11 +49,28 @@ class SolrService
end
def
search
(
params
)
# city = @city.present? ? "city:\"#{escape_str(@city.name)}\"" : ""
# industry = @industry.present? ? "industry:\"#{escape_str(@industry.name)}\"" : ""
response
=
@solr
.
get
"select"
,
params:
{
q:
"*
#{
params
}
*"
,
# fq: [industry, city],
rows:
Job
.
count
}
response
[
"response"
]
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"
]
end
def
query_by_industry
(
industry_name
)
industry
=
"industry:
#{
escape_str
(
industry_name
)
}
"
response
=
@solr
.
get
"select"
,
params:
{
q:
"*:*"
,
fq:
industry
,
rows:
Job
.
count
}
response
[
"response"
]
...
...
app/views/jobs/index.html.erb
View file @
5cb0d3a0
...
...
@@ -3,10 +3,8 @@
<%=
submit_tag
"Search"
,
class:
"btn btn-primary mb-2"
%>
<%
end
%>
<h3>
Total:
<%=
params
[
:city_id
]
?
@city
.
job_count
:
(
params
[
:industry_id
]
?
@industry
.
job_count
:
@jobs_count
)
%>
</h3>
<h3>
Result for:
<%=
params
[
:city_id
]
?
"City:
#{
@city
.
name
}
"
:
(
params
[
:industry_id
]
?
"Industry:
#{
@industry
.
name
}
"
:
params
[
:search
])
%>
</h3>
<h3>
Total:
<%=
view_jobs_count
(
@jobs_count
)
%>
</h3>
<h3>
Result for:
<%=
view_search_result
%>
</h3>
<%=
paginate
@jobs
%>
...
...
lib/tasks/task.rake
View file @
5cb0d3a0
...
...
@@ -13,20 +13,15 @@ namespace :solr do
task
solr_index: :environment
do
SolrService
.
new
.
add_data
index
=
ActiveSupport
::
Logger
.
new
(
"log/solr_service.log"
)
index
.
info
"Solr index data succesfully at
#{
Time
.
current
}
"
solr_index_data
=
ActiveSupport
::
Logger
.
new
(
"log/solr_service.log"
)
solr_index_data
.
info
"Solr index data succesfully at
#{
Time
.
current
}
"
end
desc
"solr delete data"
task
solr_delete: :environment
do
SolrService
.
new
.
delete_data
delete
=
ActiveSupport
::
Logger
.
new
(
"log/solr_service.log"
)
delete
.
info
"Solr delete all data succesfully at
#{
Time
.
current
}
"
end
desc
"solr search"
task
solr_search: :environment
do
SolrService
.
new
.
search
(
@search
)
solr_delete_data
=
ActiveSupport
::
Logger
.
new
(
"log/solr_service.log"
)
solr_delete_data
.
info
"Solr delete all data succesfully at
#{
Time
.
current
}
"
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment