diff --git a/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb b/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb index 08735d5..15c6c01 100644 --- a/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb +++ b/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb @@ -1,6 +1,11 @@ class ElasticsearchPluginController < ApplicationController no_design_blocks + def index + search() + render :action => 'search' + end + def search @results = [] @query = params[:q] @@ -23,7 +28,13 @@ class ElasticsearchPluginController < ApplicationController query = {} unless text.blank? - fields = klass::SEARCHABLE_FIELDS.map {|k, v| "#{k}^#{v[:weight]}"} + fields = klass.indexable_fields.map do |key, value| + if value[:weight] + "#{k}^#{v[:weight]}" + else + "#{k}" + end + end query = { query: { diff --git a/plugins/elasticsearch/lib/elasticsearch_helper.rb b/plugins/elasticsearch/lib/elasticsearch_helper.rb deleted file mode 100644 index 66cd907..0000000 --- a/plugins/elasticsearch/lib/elasticsearch_helper.rb +++ /dev/null @@ -1,31 +0,0 @@ -module INDEXED_MODEL - include Elasticsearch::Model - include Elasticsearch::Model::Callbacks - - def self.included base - base.extend ClassMethods - end - - module ClassMethods -# settings index: { number_of_shards: 1 } do -# mappings dynamic: 'false' do -# self::SEARCHABLE_FIELDS.each do |field, value| -# indexes field -# end -# end -# -# self.__elasticsearch__.client.indices.delete \ -# index: self.index_name rescue nil -# -# self.__elasticsearch__.client.indices.create \ -# index: self.index_name, -# body: { -# settings: self.settings.to_hash, -# mappings: self.mappings.to_hash -# } -# -# self.import -# end - end -end - diff --git a/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb b/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb new file mode 100644 index 0000000..6e503ff --- /dev/null +++ b/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb @@ -0,0 +1,33 @@ +module ElasticsearchIndexedModel + + def self.included base + base.send :include, Elasticsearch::Model + base.class_eval do + settings index: { number_of_shards: 1 } do + mappings dynamic: 'false' do + base::SEARCHABLE_FIELDS.each do |field, value| + indexes field + print '.' + end + end + base.__elasticsearch__.client.indices.delete \ + index: base.index_name rescue nil + base.__elasticsearch__.client.indices.create \ + index: base.index_name, + body: { + settings: base.settings.to_hash, + mappings: base.mappings.to_hash + } + end + end + base.extend ClassMethods + base.send :import + end + + module ClassMethods + def indexable_fields + self::SEARCHABLE_FIELDS.keys + self.control_fields + end + end + +end diff --git a/plugins/elasticsearch/lib/ext/article.rb b/plugins/elasticsearch/lib/ext/article.rb index 7398f9a..ff88a31 100644 --- a/plugins/elasticsearch/lib/ext/article.rb +++ b/plugins/elasticsearch/lib/ext/article.rb @@ -1,15 +1,13 @@ require_dependency 'article' -require_relative '../elasticsearch_helper' +require_relative '../elasticsearch_indexed_model' class Article - include INDEXED_MODEL + include ElasticsearchIndexedModel def self.control_fields - %w(advertise published).map{ |e| e.to_sym } + [ + :advertise, + :published, + ] end - - def self.indexable_fields - SEARCHABLE_FIELDS.keys + self.control_fields - end - end diff --git a/plugins/elasticsearch/lib/ext/category.rb b/plugins/elasticsearch/lib/ext/category.rb index 0fb6e6f..a257891 100644 --- a/plugins/elasticsearch/lib/ext/category.rb +++ b/plugins/elasticsearch/lib/ext/category.rb @@ -1,9 +1,11 @@ require_dependency 'category' +require_relative '../elasticsearch_indexed_model' class Category + include ElasticsearchIndexedModel + def self.control_fields - %w() + [] end - require_relative '../elasticsearch_helper' end diff --git a/plugins/elasticsearch/lib/ext/certifier.rb b/plugins/elasticsearch/lib/ext/certifier.rb deleted file mode 100644 index dd34919..0000000 --- a/plugins/elasticsearch/lib/ext/certifier.rb +++ /dev/null @@ -1,9 +0,0 @@ -require_dependency 'certifier' - -class Certifier - def self.control_fields - %w() - end - - require_relative '../elasticsearch_helper' -end diff --git a/plugins/elasticsearch/lib/ext/comment.rb b/plugins/elasticsearch/lib/ext/comment.rb index 4834c68..437c438 100644 --- a/plugins/elasticsearch/lib/ext/comment.rb +++ b/plugins/elasticsearch/lib/ext/comment.rb @@ -1,9 +1,10 @@ require_dependency 'comment' +require_relative '../elasticsearch_indexed_model' class Comment + include ElasticsearchIndexedModel + def self.control_fields - %w() + [] end - - require_relative '../elasticsearch_helper' end diff --git a/plugins/elasticsearch/lib/ext/license.rb b/plugins/elasticsearch/lib/ext/license.rb index 1504e5d..6f32a41 100644 --- a/plugins/elasticsearch/lib/ext/license.rb +++ b/plugins/elasticsearch/lib/ext/license.rb @@ -1,9 +1,10 @@ require_dependency 'license.rb' +require_relative '../elasticsearch_indexed_model' class License + include ElasticsearchIndexedModel + def self.control_fields - %w() + [] end - - require_relative '../elasticsearch_helper' end diff --git a/plugins/elasticsearch/lib/ext/national_region.rb b/plugins/elasticsearch/lib/ext/national_region.rb index d13637c..caa85ad 100644 --- a/plugins/elasticsearch/lib/ext/national_region.rb +++ b/plugins/elasticsearch/lib/ext/national_region.rb @@ -1,9 +1,10 @@ require_dependency 'national_region' +require_relative '../elasticsearch_indexed_model' class NationalRegion + include ElasticsearchIndexedModel + def self.control_fields - %w() + [] end - - require_relative '../elasticsearch_helper' end diff --git a/plugins/elasticsearch/lib/ext/product.rb b/plugins/elasticsearch/lib/ext/product.rb deleted file mode 100644 index 93ddb56..0000000 --- a/plugins/elasticsearch/lib/ext/product.rb +++ /dev/null @@ -1,9 +0,0 @@ -require_dependency 'product' - -class Product - def self.control_fields - %w() - end - - require_relative '../elasticsearch_helper' -end diff --git a/plugins/elasticsearch/lib/ext/profile.rb b/plugins/elasticsearch/lib/ext/profile.rb index e21c36f..99c7599 100644 --- a/plugins/elasticsearch/lib/ext/profile.rb +++ b/plugins/elasticsearch/lib/ext/profile.rb @@ -1,9 +1,13 @@ require_dependency 'profile' +require_relative '../elasticsearch_indexed_model' class Profile + include ElasticsearchIndexedModel + def self.control_fields - %w( visible public_profile ) + [ + :visible, + :public_profile, + ] end - - require_relative '../elasticsearch_helper' end diff --git a/plugins/elasticsearch/lib/ext/qualifier.rb b/plugins/elasticsearch/lib/ext/qualifier.rb deleted file mode 100644 index df2271e..0000000 --- a/plugins/elasticsearch/lib/ext/qualifier.rb +++ /dev/null @@ -1,9 +0,0 @@ -require_dependency 'qualifier' - -class Qualifier - def self.control_fields - %w() - end - - require_relative '../elasticsearch_helper' -end diff --git a/plugins/elasticsearch/lib/ext/scrap.rb b/plugins/elasticsearch/lib/ext/scrap.rb index e9bc012..ef8951e 100644 --- a/plugins/elasticsearch/lib/ext/scrap.rb +++ b/plugins/elasticsearch/lib/ext/scrap.rb @@ -1,9 +1,13 @@ require_dependency 'scrap' +require_relative '../elasticsearch_indexed_model' class Scrap + include ElasticsearchIndexedModel + def self.control_fields - %w(advertise published) + [ + :advertise, + :published, + ] end - - require_relative '../elasticsearch_helper' end diff --git a/plugins/elasticsearch/lib/ext/user.rb b/plugins/elasticsearch/lib/ext/user.rb index da99985..09be7fb 100644 --- a/plugins/elasticsearch/lib/ext/user.rb +++ b/plugins/elasticsearch/lib/ext/user.rb @@ -1,9 +1,10 @@ require_dependency 'user' +require_relative '../elasticsearch_indexed_model' class User + include ElasticsearchIndexedModel + def self.control_fields - %w() + [] end - - require_relative '../elasticsearch_helper' end -- libgit2 0.21.2