Commit 99d61d561dff16b048c1f3a0c3c93d9f85fdb87e

Authored by Macartur Sousa
1 parent cb83de32
Exists in elasticsearch_api

Make query generic

Signed-off-by: Macartur Sousa <macartur.sc@gmail.com>
plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb
@@ -4,15 +4,37 @@ class ElasticsearchPluginController &lt; ApplicationController @@ -4,15 +4,37 @@ class ElasticsearchPluginController &lt; ApplicationController
4 4
5 def search 5 def search
6 @results = [] 6 @results = []
  7 + @query = params[:q]
  8 + @checkbox = {}
  9 + if params[:model].present?
  10 + params[:model].keys.each do |model|
  11 + @checkbox[model.to_sym] = true
  12 + klass = model.classify.constantize
  13 + query = get_query params[:q], klass
  14 + @results += klass.__elasticsearch__.search(query).records.to_a
  15 + end
  16 + end
7 17
8 - @checkbox = {:articles => params[:articles].present?,  
9 - :communities => params[:communities].present?,  
10 - :people => params[:people].present?  
11 - } 18 + end
  19 +
  20 + private
  21 +
  22 + def get_query text, klass
  23 + query = {}
  24 + unless text.blank?
  25 +
  26 + fields = klass::SEARCHABLE_FIELDS.map {|k, v| "#{k}^#{v[:weight]}"}
12 27
13 - @results += Article.__elasticsearch__.search('{}').records.to_a if params[:articles]  
14 - @results += Community.__elasticsearch__.search('{}').records.to_a if params[:communities]  
15 - @results += Person.__elasticsearch__.search('{}').records.to_a if params[:people] 28 + query = {
  29 + query: {
  30 + multi_match: {
  31 + query: text,
  32 + fields: fields
  33 + }
  34 + }
  35 + }
  36 + end
  37 + query
16 end 38 end
17 39
18 end 40 end
plugins/elasticsearch/views/elasticsearch_plugin/search.html.erb
@@ -2,17 +2,17 @@ @@ -2,17 +2,17 @@
2 2
3 <%= form_tag controller: "elasticsearch_plugin", action: "search" do %> 3 <%= form_tag controller: "elasticsearch_plugin", action: "search" do %>
4 <%= label_tag(:q, _("Search")) %> 4 <%= label_tag(:q, _("Search")) %>
5 - <%= text_field_tag(:q) %> 5 + <%= text_field_tag(:q, @query) %>
6 6
7 <%= submit_tag _("Send") %> 7 <%= submit_tag _("Send") %>
8 8
9 - <%= check_box_tag 'communities', 1, @checkbox[:communities] %> 9 + <%= check_box_tag 'model[communities]', 1, @checkbox[:communities] %>
10 <%= label_tag('communities', _("communities")) %> 10 <%= label_tag('communities', _("communities")) %>
11 11
12 - <%= check_box_tag 'people', 1, @checkbox[:people] %> 12 + <%= check_box_tag 'model[people]', 1, @checkbox[:people] %>
13 <%= label_tag('people', _("people")) %> 13 <%= label_tag('people', _("people")) %>
14 14
15 - <%= check_box_tag 'articles', 1, @checkbox[:articles] %> 15 + <%= check_box_tag 'model[articles]', 1, @checkbox[:articles] %>
16 <%= label_tag('articles', _("articles")) %> 16 <%= label_tag('articles', _("articles")) %>
17 17
18 <% end %> 18 <% end %>