Commit b614d1559e26ed9f10404ef47483634e57a46352
Committed by
Macartur Sousa
1 parent
002cf525
Exists in
fix_sign_up_form
Elasticsearch: Refactored models
redirect index -> search action removing models extensions that are removed from core renaming elasticsearch helper to a better name (now, working as well) model extensions working with the new helper name check :weight exists refactoring models extensions
Showing
14 changed files
with
85 additions
and
87 deletions
Show diff stats
plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb
1 | 1 | class ElasticsearchPluginController < ApplicationController |
2 | 2 | no_design_blocks |
3 | 3 | |
4 | + def index | |
5 | + search() | |
6 | + render :action => 'search' | |
7 | + end | |
8 | + | |
4 | 9 | def search |
5 | 10 | @results = [] |
6 | 11 | @query = params[:q] |
... | ... | @@ -23,7 +28,13 @@ class ElasticsearchPluginController < ApplicationController |
23 | 28 | query = {} |
24 | 29 | unless text.blank? |
25 | 30 | |
26 | - fields = klass::SEARCHABLE_FIELDS.map {|k, v| "#{k}^#{v[:weight]}"} | |
31 | + fields = klass.indexable_fields.map do |key, value| | |
32 | + if value[:weight] | |
33 | + "#{k}^#{v[:weight]}" | |
34 | + else | |
35 | + "#{k}" | |
36 | + end | |
37 | + end | |
27 | 38 | |
28 | 39 | query = { |
29 | 40 | query: { | ... | ... |
plugins/elasticsearch/lib/elasticsearch_helper.rb
... | ... | @@ -1,31 +0,0 @@ |
1 | -module INDEXED_MODEL | |
2 | - include Elasticsearch::Model | |
3 | - include Elasticsearch::Model::Callbacks | |
4 | - | |
5 | - def self.included base | |
6 | - base.extend ClassMethods | |
7 | - end | |
8 | - | |
9 | - module ClassMethods | |
10 | -# settings index: { number_of_shards: 1 } do | |
11 | -# mappings dynamic: 'false' do | |
12 | -# self::SEARCHABLE_FIELDS.each do |field, value| | |
13 | -# indexes field | |
14 | -# end | |
15 | -# end | |
16 | -# | |
17 | -# self.__elasticsearch__.client.indices.delete \ | |
18 | -# index: self.index_name rescue nil | |
19 | -# | |
20 | -# self.__elasticsearch__.client.indices.create \ | |
21 | -# index: self.index_name, | |
22 | -# body: { | |
23 | -# settings: self.settings.to_hash, | |
24 | -# mappings: self.mappings.to_hash | |
25 | -# } | |
26 | -# | |
27 | -# self.import | |
28 | -# end | |
29 | - end | |
30 | -end | |
31 | - |
plugins/elasticsearch/lib/elasticsearch_indexed_model.rb
0 → 100644
... | ... | @@ -0,0 +1,33 @@ |
1 | +module ElasticsearchIndexedModel | |
2 | + | |
3 | + def self.included base | |
4 | + base.send :include, Elasticsearch::Model | |
5 | + base.class_eval do | |
6 | + settings index: { number_of_shards: 1 } do | |
7 | + mappings dynamic: 'false' do | |
8 | + base::SEARCHABLE_FIELDS.each do |field, value| | |
9 | + indexes field | |
10 | + print '.' | |
11 | + end | |
12 | + end | |
13 | + base.__elasticsearch__.client.indices.delete \ | |
14 | + index: base.index_name rescue nil | |
15 | + base.__elasticsearch__.client.indices.create \ | |
16 | + index: base.index_name, | |
17 | + body: { | |
18 | + settings: base.settings.to_hash, | |
19 | + mappings: base.mappings.to_hash | |
20 | + } | |
21 | + end | |
22 | + end | |
23 | + base.extend ClassMethods | |
24 | + base.send :import | |
25 | + end | |
26 | + | |
27 | + module ClassMethods | |
28 | + def indexable_fields | |
29 | + self::SEARCHABLE_FIELDS.keys + self.control_fields | |
30 | + end | |
31 | + end | |
32 | + | |
33 | +end | ... | ... |
plugins/elasticsearch/lib/ext/article.rb
1 | 1 | require_dependency 'article' |
2 | -require_relative '../elasticsearch_helper' | |
2 | +require_relative '../elasticsearch_indexed_model' | |
3 | 3 | |
4 | 4 | class Article |
5 | - include INDEXED_MODEL | |
5 | + include ElasticsearchIndexedModel | |
6 | 6 | |
7 | 7 | def self.control_fields |
8 | - %w(advertise published).map{ |e| e.to_sym } | |
8 | + [ | |
9 | + :advertise, | |
10 | + :published, | |
11 | + ] | |
9 | 12 | end |
10 | - | |
11 | - def self.indexable_fields | |
12 | - SEARCHABLE_FIELDS.keys + self.control_fields | |
13 | - end | |
14 | - | |
15 | 13 | end | ... | ... |
plugins/elasticsearch/lib/ext/category.rb
plugins/elasticsearch/lib/ext/certifier.rb
plugins/elasticsearch/lib/ext/comment.rb
plugins/elasticsearch/lib/ext/license.rb
plugins/elasticsearch/lib/ext/national_region.rb
plugins/elasticsearch/lib/ext/product.rb
plugins/elasticsearch/lib/ext/profile.rb
1 | 1 | require_dependency 'profile' |
2 | +require_relative '../elasticsearch_indexed_model' | |
2 | 3 | |
3 | 4 | class Profile |
5 | + include ElasticsearchIndexedModel | |
6 | + | |
4 | 7 | def self.control_fields |
5 | - %w( visible public_profile ) | |
8 | + [ | |
9 | + :visible, | |
10 | + :public_profile, | |
11 | + ] | |
6 | 12 | end |
7 | - | |
8 | - require_relative '../elasticsearch_helper' | |
9 | 13 | end | ... | ... |
plugins/elasticsearch/lib/ext/qualifier.rb
plugins/elasticsearch/lib/ext/scrap.rb
1 | 1 | require_dependency 'scrap' |
2 | +require_relative '../elasticsearch_indexed_model' | |
2 | 3 | |
3 | 4 | class Scrap |
5 | + include ElasticsearchIndexedModel | |
6 | + | |
4 | 7 | def self.control_fields |
5 | - %w(advertise published) | |
8 | + [ | |
9 | + :advertise, | |
10 | + :published, | |
11 | + ] | |
6 | 12 | end |
7 | - | |
8 | - require_relative '../elasticsearch_helper' | |
9 | 13 | end | ... | ... |
plugins/elasticsearch/lib/ext/user.rb