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 Hoang Mai Phuong
VeNJOB
Commits
ebd5b445
Commit
ebd5b445
authored
Oct 19, 2021
by
Nguyen Hoang Mai Phuong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
create class Solrsearch
parent
488000a4
Pipeline
#1491
failed with stages
in 0 seconds
Changes
5
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
39 deletions
+56
-39
app/controllers/jobs_controller.rb
+3
-9
app/helpers/application_helper.rb
+1
-1
config/application.rb
+1
-0
lib/solr/solr_search.rb
+43
-0
lib/tasks/solr.rake
+8
-29
No files found.
app/controllers/jobs_controller.rb
View file @
ebd5b445
...
...
@@ -23,15 +23,9 @@ class JobsController < ApplicationController
def
search
@keyword
=
job_params
[
:search
].
gsub!
(
/[^[:alnum:]]/
,
' '
)
solr
=
RSolr
.
connect
url:
'http://localhost:8983/solr/VeNJOB'
response
=
solr
.
get
'select'
,
params:
{
q:
"city:
#{
@keyword
}
* or title:
#{
@keyword
}
* or industry:
#{
@keyword
}
* or company:
#{
@keyword
}
*"
,
start:
0
,
rows:
2_147_483_647
}
result
=
response
[
'response'
][
'docs'
]
@result_search
=
Kaminari
.
paginate_array
(
result
).
page
(
params
[
:page
])
@total
=
result
.
count
search_param
=
SolrSearch
.
new
.
search
(
@keyword
)
@result_search
=
Kaminari
.
paginate_array
(
search_param
).
page
(
params
[
:page
])
@total
=
search_param
.
count
end
private
...
...
app/helpers/application_helper.rb
View file @
ebd5b445
...
...
@@ -30,6 +30,6 @@ module ApplicationHelper
end
def
search
(
input
)
Job
.
find_by
(
id:
input
[
'id'
])
Job
.
find_by
(
id:
input
[
'
job_
id'
])
end
end
config/application.rb
View file @
ebd5b445
...
...
@@ -17,6 +17,7 @@ module VeNJOB
# in config/environments, which are processed later.
#
config
.
time_zone
=
'Hanoi'
config
.
eager_load_paths
<<
"
#{
Rails
.
root
}
/lib/solr"
# config.eager_load_paths << Rails.root.join("extras")
end
end
lib/solr/solr_search.rb
0 → 100644
View file @
ebd5b445
class
SolrSearch
def
initialize
@solr
=
RSolr
.
connect
url:
'http://localhost:8983/solr/VeNJOB'
end
def
search
(
keyword
)
response
=
@solr
.
get
'select'
,
params:
{
q:
"cities_name:
#{
keyword
}
* or title:
#{
keyword
}
* or industries_name:
#{
keyword
}
* or company_name:
#{
keyword
}
*"
,
fl:
%w[job_id slug]
,
start:
0
,
rows:
2_147_483_647
}
response
[
'response'
][
'docs'
]
end
def
add_data
logger
=
Logger
.
new
(
"
#{
Rails
.
root
}
/log/add_data_solr.log"
)
logger
.
info
"Start add data at:
#{
Time
.
current
}
"
data
=
Job
.
all
.
includes
(
:cities
,
:industries
,
:company
)
data
.
each
do
|
record
|
job_id
=
record
.
id
title
=
record
.
title
company_name
=
record
.
company
.
name
cities
=
record
.
cities
.
uniq
.
map
(
&
:name
)
industries
=
record
.
industries
.
uniq
.
map
(
&
:name
)
slug
=
record
.
slug
@solr
.
add
(
job_id:
job_id
,
title:
title
,
company_name:
company_name
,
cities_name:
cities
,
industries_name:
industries
,
slug:
slug
)
@solr
.
commit
rescue
StandardError
=>
error
logger
.
error
"The job has error:
#{
job_id
}
"
logger
.
error
error
next
end
logger
.
info
"End add data at:
#{
Time
.
current
}
"
end
def
delete_data
@solr
.
delete_by_query
'*:*'
@solr
.
commit
end
end
lib/tasks/solr.rake
View file @
ebd5b445
namespace
:solr
do
desc
"Add data into apache solr"
desc
'Add data into apache solr'
task
setup: :environment
do
data
=
Job
.
all
.
includes
(
:cities
,
:industries
,
:company
)
solr
=
RSolr
.
connect
url:
'http://localhost:8983/solr/VeNJOB'
data
.
each
do
|
record
|
id
=
record
.
id
title
=
record
.
title
salary
=
record
.
salary
overview
=
record
.
overview
company
=
record
.
company
.
name
experience
=
record
.
experience
job_type
=
record
.
job_type
level
=
record
.
level
slug
=
record
.
slug
job_cities
=
[]
cities
=
record
.
cities
.
uniq
cities
.
each
do
|
city
|
city_name
=
city
.
name
job_cities
<<
city_name
connect_solr
.
add_data
end
job_industries
=
[]
industries
=
record
.
industries
.
uniq
industries
.
each
do
|
industry
|
industry_name
=
industry
.
name
job_industries
<<
industry_name
end
solr
.
add
(
id:
id
,
title:
title
,
overview:
overview
,
salary:
salary
,
company:
company
,
experience:
experience
,
job_type:
job_type
,
level:
level
,
city:
job_cities
,
industry:
job_industries
,
slug:
slug
)
solr
.
commit
desc
'Delete data in apache solr'
task
delete_data: :environment
do
connect_solr
.
delete_data
end
def
connect_solr
SolrSearch
.
new
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