create func search & auto index data to solr server
{{ resolvedDiscussionCount }}/{{ discussionCount }} {{ resolvedCountText }} resolved
-
-
-
-
-
-
-
-
-
-
Toggle commit list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
app/forms/send_data_to_apply_form.rb 0 → 100644
-
2 2 before_action :load_data_dropdown 3 3 4 4 def search 5 @keyword = params[:keyword] 5 debugger 6 @keyword = params[:send_data_to_apply_form][:keyword] 6 7 @industry = Industry.find_by(id: params[:industry_id]) if params[:industry_id].present? 7 8 @city = City.find_by(id: params[:city_id]) if params[:city_id].present? 8 @results = Search::Query.new.search(params[:keyword], params[:industry_id], params[:city_id], params[:page]) 9 @results = Search::Query.new.search(@keyword, params[:industry_id], params[:city_id], params[:page]) -
Master
Truyền trực tiếp params vào thì có vấn đề gì không ?
Vd :
Search::Query.new.search(params)
-
-
3 3 # Home page 4 4 class HomeController < ApplicationController 5 5 def index 6 @search = SendDataToApplyForm.new 6 7 @industries = Industry.order(name: :asc).all -
Master
Có cần
#allở đây không ?
-
-
app/views/search/_new.html.erb 0 → 100644
1 <div class = "box-banner"> -
Master
Thẻ
classsao bị khoảng trắng thế này ?
-
-
app/views/search/_new.html.erb 0 → 100644
5 <div class = "slogan"> 6 <h2 class = "slogan_text"> 7 <%= t('pages.banner.slogan') %> 8 </h2> 9 <h5 class = "slogan_text_h5"> 10 <%= t('pages.banner.slogan') %> 11 </h5> 12 </div> 13 </div> 14 </div> 15 <!-- Process search pc--> 16 <div class="box-search"> 17 <div class="search_scaffold"> 18 <div class = "total_job"> 19 <% if @job_count.blank? %> 20 <h4 class="show_total_job"><%= t('pages.banner.slogan_2') %></h4> -
Master
Giữ lại phần cố định, tách phần thay đổi.
<h4 class="show_total_job"> <%= @job_count.blank? ? t('pages.banner.slogan_2') : t('pages.banner.slogan_3', job_count: @job_count) %> </h4>
-
-
app/views/search/_new.html.erb 0 → 100644
27 <div class="search_input"> 28 <%= f.search_field :keyword, value: @keyword, class: 'custom_input_search', placeholder: t('pages.banner.search_placeholder') %> 29 </div> 30 <div class="search_industries"> 31 <div class="icon_list"> 32 <i class="fa fa-list-ul" aria-hidden="true"></i> 33 </div> 34 <% selected = @industry.blank? ? '*' : @industry.id %> 35 <%= select_tag 'industry_id', options_from_collection_for_select(@industries, 'id', 'name', selected), prompt: t('pages.banner.all_industries'), class: 'show_list_industries' %> 36 </div> 37 <div class="search_location"> 38 <div class="icon_list"> 39 <i class="fas fa-map-marker-alt"></i> 40 </div> 41 <% selected = @city.blank? ? '*' : @city.id %> 42 <%= select_tag 'city_id', options_from_collection_for_select(@cities, 'id', 'name', selected), prompt: t('pages.banner.all_locations'), class: 'show_list_cities' %> -
Master
Sử dụng
#selectcủaform_for
-
-
app/views/search/_new.html.erb 0 → 100644
26 <div class="filter_box"> 27 <div class="search_input"> 28 <%= f.search_field :keyword, value: @keyword, class: 'custom_input_search', placeholder: t('pages.banner.search_placeholder') %> 29 </div> 30 <div class="search_industries"> 31 <div class="icon_list"> 32 <i class="fa fa-list-ul" aria-hidden="true"></i> 33 </div> 34 <% selected = @industry.blank? ? '*' : @industry.id %> 35 <%= select_tag 'industry_id', options_from_collection_for_select(@industries, 'id', 'name', selected), prompt: t('pages.banner.all_industries'), class: 'show_list_industries' %> 36 </div> 37 <div class="search_location"> 38 <div class="icon_list"> 39 <i class="fas fa-map-marker-alt"></i> 40 </div> 41 <% selected = @city.blank? ? '*' : @city.id %> -
Master
Đưa phần xử lý logic vào Form object
-
-
-
-
-
-
-
-
-
-
-
Toggle commit list
-
-
-
-
Toggle commit list
-
lib/solr/searches/query.rb 0 → 100644
6 solr = connect_solr 7 # Escape input & Convert space to asterisks 8 data = sub_space_params!(params[:search][:keyword], params[:search][:industry_id], params[:search][:city_id]) 9 query = if [params[:search][:keyword], params[:search][:industry_id], params[:search][:city_id]].all?(&:blank?) 10 '*:*' 11 else 12 "#{data[:keyword]} AND (industry_id: #{data[:industry_id]}) AND (location_id: #{data[:location_id]})" 13 end 14 response = solr.paginate(params[:page], Settings.number_result_search_in_page, 'select', params: { q: query }) 15 Kaminari.paginate_array(response['response']['docs'], total_count: response['response']['numFound']).page(params[:page]).per(Settings.number_result_search_in_page) 16 end 17 18 def sub_space_params!(keyword, industry_id, location_id) 19 arr_params = {} 20 arr_params[:keyword] = RSolr.solr_escape(keyword.downcase || '') 21 arr_params[:industry_id] = RSolr.solr_escape(industry_id || '') -
Master
Nếu thay các keyword đặc biệt vào url của browser thì lỗi sẽ xuất hiện
http://localhost:1234/vi/search?search[keyword]=AND+b&search[industry_id]=AND+b&search[city_id]=
Tất cả params nhận từ user đều cần được validate nhiều trường hợp nhất có thể
-
-
-
-
-
-
-
-
Toggle commit list
-
-
merged
Toggle commit list