Commit b614d1559e26ed9f10404ef47483634e57a46352

Authored by Joenio Costa
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
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 &lt; 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
1 1 require_dependency 'category'
  2 +require_relative '../elasticsearch_indexed_model'
2 3  
3 4 class Category
  5 + include ElasticsearchIndexedModel
  6 +
4 7 def self.control_fields
5   - %w()
  8 + []
6 9 end
7 10  
8   - require_relative '../elasticsearch_helper'
9 11 end
... ...
plugins/elasticsearch/lib/ext/certifier.rb
... ... @@ -1,9 +0,0 @@
1   -require_dependency 'certifier'
2   -
3   -class Certifier
4   - def self.control_fields
5   - %w()
6   - end
7   -
8   - require_relative '../elasticsearch_helper'
9   -end
plugins/elasticsearch/lib/ext/comment.rb
1 1 require_dependency 'comment'
  2 +require_relative '../elasticsearch_indexed_model'
2 3  
3 4 class Comment
  5 + include ElasticsearchIndexedModel
  6 +
4 7 def self.control_fields
5   - %w()
  8 + []
6 9 end
7   -
8   - require_relative '../elasticsearch_helper'
9 10 end
... ...
plugins/elasticsearch/lib/ext/license.rb
1 1 require_dependency 'license.rb'
  2 +require_relative '../elasticsearch_indexed_model'
2 3  
3 4 class License
  5 + include ElasticsearchIndexedModel
  6 +
4 7 def self.control_fields
5   - %w()
  8 + []
6 9 end
7   -
8   - require_relative '../elasticsearch_helper'
9 10 end
... ...
plugins/elasticsearch/lib/ext/national_region.rb
1 1 require_dependency 'national_region'
  2 +require_relative '../elasticsearch_indexed_model'
2 3  
3 4 class NationalRegion
  5 + include ElasticsearchIndexedModel
  6 +
4 7 def self.control_fields
5   - %w()
  8 + []
6 9 end
7   -
8   - require_relative '../elasticsearch_helper'
9 10 end
... ...
plugins/elasticsearch/lib/ext/product.rb
... ... @@ -1,9 +0,0 @@
1   -require_dependency 'product'
2   -
3   -class Product
4   - def self.control_fields
5   - %w()
6   - end
7   -
8   - require_relative '../elasticsearch_helper'
9   -end
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
... ... @@ -1,9 +0,0 @@
1   -require_dependency 'qualifier'
2   -
3   -class Qualifier
4   - def self.control_fields
5   - %w()
6   - end
7   -
8   - require_relative '../elasticsearch_helper'
9   -end
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
1 1 require_dependency 'user'
  2 +require_relative '../elasticsearch_indexed_model'
2 3  
3 4 class User
  5 + include ElasticsearchIndexedModel
  6 +
4 7 def self.control_fields
5   - %w()
  8 + []
6 9 end
7   -
8   - require_relative '../elasticsearch_helper'
9 10 end
... ...