Commit a82bdd13bc89a61461d09218b1d67a0e35a379d1
1 parent
e064f1e0
Exists in
fix_sign_up_form
ELasticsearch: Refacted elasticsearch controller
Adding Elasticsearch_helper Signed-off-by: Macartur Sousa <macartur.sc@gmail.com>
Showing
2 changed files
with
13 additions
and
97 deletions
Show diff stats
plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb
1 | +require_relative '../helpers/elasticsearch_helper' | |
2 | + | |
1 | 3 | class ElasticsearchPluginController < ApplicationController |
2 | 4 | no_design_blocks |
3 | - | |
4 | - SEARCHABLE_TYPES = { :all => { label: _("All Results")}, | |
5 | - :community => { label: _("Communities")}, | |
6 | - :event => { label: _("Events")}, | |
7 | - :person => { label: _("People")} | |
8 | - } | |
9 | - | |
10 | - SEARCH_FILTERS = { :lexical => { label: _("Alphabetical Order")}, | |
11 | - :recent => { label: _("More Recent Order")}, | |
12 | - :access => { label: _("More accessed")} | |
13 | - } | |
5 | + include ElasticsearchHelper | |
14 | 6 | |
15 | 7 | def index |
16 | 8 | search() |
... | ... | @@ -24,89 +16,4 @@ class ElasticsearchPluginController < ApplicationController |
24 | 16 | process_results |
25 | 17 | end |
26 | 18 | |
27 | - def process_results | |
28 | - @query = params[:query] | |
29 | - | |
30 | - if @selected_type == :all | |
31 | - @results = search_from_all_models | |
32 | - else | |
33 | - @results = search_from_model @selected_type | |
34 | - end | |
35 | - end | |
36 | - | |
37 | - private | |
38 | - | |
39 | - def fields_from_model | |
40 | - klass::SEARCHABLE_FIELDS.map do |key, value| | |
41 | - if value[:weight] | |
42 | - "#{key}^#{value[:weight]}" | |
43 | - else | |
44 | - "#{key}" | |
45 | - end | |
46 | - end | |
47 | - end | |
48 | - | |
49 | - def get_query text, klass=nil | |
50 | - query = {} | |
51 | - unless text.blank? | |
52 | - text = text.downcase | |
53 | - query = { | |
54 | - query: { | |
55 | - match_all: { | |
56 | - } | |
57 | - }, | |
58 | - filter: { | |
59 | - regexp: { | |
60 | - name: { | |
61 | - value: ".*" + text + ".*" } | |
62 | - } | |
63 | - }, | |
64 | - suggest: { | |
65 | - autocomplete: { | |
66 | - text: text, | |
67 | - term: { | |
68 | - field: "name", | |
69 | - suggest_mode: "always" | |
70 | - } | |
71 | - } | |
72 | - } | |
73 | - | |
74 | - } | |
75 | - end | |
76 | - query | |
77 | - end | |
78 | - | |
79 | - | |
80 | - def search_from_all_models | |
81 | - models = [] | |
82 | - query = get_query params[:query] | |
83 | - | |
84 | - SEARCHABLE_TYPES.keys.each {| model | models.append( model.to_s.classify.constantize) if model != :all } | |
85 | - Elasticsearch::Model.search(query, models, size: default_per_page).page(params[:page]).records | |
86 | - end | |
87 | - | |
88 | - def search_from_model model | |
89 | - begin | |
90 | - klass = model.to_s.classify.constantize | |
91 | - query = get_query params[:query], klass | |
92 | - klass.search(query, size: default_per_page).page(params[:page]).records | |
93 | - rescue | |
94 | - [] | |
95 | - end | |
96 | - end | |
97 | - | |
98 | - def define_searchable_types | |
99 | - @searchable_types = SEARCHABLE_TYPES | |
100 | - @selected_type = params[:selected_type].nil? ? :all : params[:selected_type].to_sym | |
101 | - end | |
102 | - | |
103 | - def define_search_fields_types | |
104 | - @search_filter_types = SEARCH_FILTERS | |
105 | - @selected_filter_field = params[:selected_filter_field].nil? ? SEARCH_FILTERS.keys.first : params[:selected_filter_field].to_sym | |
106 | - end | |
107 | - | |
108 | - def default_per_page | |
109 | - 10 | |
110 | - end | |
111 | - | |
112 | 19 | end | ... | ... |
plugins/elasticsearch/lib/elasticsearch_plugin/api.rb
1 | +require_relative '../../helpers/elasticsearch_helper' | |
2 | + | |
3 | + | |
1 | 4 | class ElasticsearchPlugin::API < Grape::API |
2 | 5 | include Api::Helpers |
3 | 6 | |
4 | 7 | resource :search do |
5 | 8 | get do |
6 | - target = Person.first | |
7 | 9 | present target, :with => Api::Entities::Person |
8 | 10 | end |
11 | + | |
12 | + get 'types' do | |
13 | + types = {types: ElasticsearchHelper::SEARCHABLE_TYPES.stringify_keys.keys} | |
14 | + present types, with: Grape::Presenters::Presenter | |
15 | + end | |
16 | + | |
9 | 17 | end |
18 | + | |
10 | 19 | end | ... | ... |