diff --git a/plugins/elasticsearch/helpers/elasticsearch_helper.rb b/plugins/elasticsearch/helpers/elasticsearch_helper.rb index 8fbe049..902fa5f 100644 --- a/plugins/elasticsearch/helpers/elasticsearch_helper.rb +++ b/plugins/elasticsearch/helpers/elasticsearch_helper.rb @@ -92,19 +92,20 @@ module ElasticsearchHelper query = { query: query_method(text, fields), sort: [ - {"name.raw" => {"order" => "asc"}} - ], - suggest: { - autocomplete: { - text: text, - term: { - field: "name", - suggest_mode: "always" - } + {"name.raw" => {"order" => "desc"}}, "_score" + ], + suggest: { + autocomplete: { + text: text, + term: { + field: "name", + suggest_mode: "always" + } + } } } - } query end + end diff --git a/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb b/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb index b7dcfee..dcecb7b 100644 --- a/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb +++ b/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb @@ -7,12 +7,17 @@ module ElasticsearchIndexedModel base.class_eval do settings index: { number_of_shards: 1 } do mappings dynamic: 'false' do + puts "="*10 + puts base.inspect + puts base.indexable_fields base.indexable_fields.each do |field, value| value = {} if value.nil? - indexes field, type: value[:type].presence, fields: {"raw" => - {"index" => "not_analyzed", - "type" => "String" - } } + if field.to_s == "name" + indexes "name.raw", type: "string", index: "not_analyzed" + indexes "name", type: "string" + else + indexes field, type: value[:type].presence + end print '.' end end diff --git a/plugins/elasticsearch/lib/ext/community.rb b/plugins/elasticsearch/lib/ext/community.rb index 8dd9d86..cd15948 100644 --- a/plugins/elasticsearch/lib/ext/community.rb +++ b/plugins/elasticsearch/lib/ext/community.rb @@ -3,7 +3,12 @@ require_relative '../elasticsearch_indexed_model' class Community def self.control_fields - {} + {:name => {type: "string", analyzer: "english", fields: { + raw:{ + type: "string", + index: "not_analyzed" + } + }}} end include ElasticsearchIndexedModel end diff --git a/plugins/elasticsearch/lib/ext/event.rb b/plugins/elasticsearch/lib/ext/event.rb index d0a4b15..362b765 100644 --- a/plugins/elasticsearch/lib/ext/event.rb +++ b/plugins/elasticsearch/lib/ext/event.rb @@ -6,6 +6,12 @@ class Event { :advertise => {}, :published => {}, + :name => {type: "string", analyzer: "english", fields: { + raw:{ + type: "string", + index: "not_analyzed" + } + }} } end include ElasticsearchIndexedModel diff --git a/plugins/elasticsearch/lib/ext/person.rb b/plugins/elasticsearch/lib/ext/person.rb index c99e97e..75ef4e5 100644 --- a/plugins/elasticsearch/lib/ext/person.rb +++ b/plugins/elasticsearch/lib/ext/person.rb @@ -6,7 +6,12 @@ class Person { :visible => {type: 'boolean'}, :public_profile => {type: 'boolean'}, - } + :name => {type: "string", fields: { + raw:{ + type: "string", + index: "not_analyzed" + } + }}} end include ElasticsearchIndexedModel end diff --git a/plugins/elasticsearch/lib/ext/text_article.rb b/plugins/elasticsearch/lib/ext/text_article.rb index 2f3206f..e43194b 100644 --- a/plugins/elasticsearch/lib/ext/text_article.rb +++ b/plugins/elasticsearch/lib/ext/text_article.rb @@ -5,7 +5,7 @@ class TextArticle def self.control_fields { :advertise => {}, - :published => {}, + :published => {} } end include ElasticsearchIndexedModel -- libgit2 0.21.2