Commit 8913303c9d52418634b3eef81902e085260dc191
Committed by
Macartur Sousa
1 parent
382bcf69
Exists in
elasticsearch_sort
Adds lexical sort for searchs without expression
Showing
2 changed files
with
37 additions
and
29 deletions
Show diff stats
plugins/elasticsearch/helpers/elasticsearch_helper.rb
| @@ -64,39 +64,47 @@ module ElasticsearchHelper | @@ -64,39 +64,47 @@ module ElasticsearchHelper | ||
| 64 | 64 | ||
| 65 | private | 65 | private |
| 66 | 66 | ||
| 67 | - def get_query text, klass=nil | ||
| 68 | - fields = klass.nil? ? (fields_from_models searchable_models) : (fields_from_models [klass]) | ||
| 69 | - query = {} | ||
| 70 | - unless text.blank? | ||
| 71 | - text = text.downcase | ||
| 72 | - query = { | ||
| 73 | - query: { | ||
| 74 | - multi_match: { | ||
| 75 | - query: text, | ||
| 76 | - type: "phrase", | ||
| 77 | - fields: fields, | ||
| 78 | - zero_terms_query: "none" | ||
| 79 | - }, | ||
| 80 | - }, | ||
| 81 | - sort: [ | ||
| 82 | - {"name.raw" => {"order" => "asc"}} | ||
| 83 | - ], | ||
| 84 | - suggest: { | ||
| 85 | - autocomplete: { | ||
| 86 | - text: text, | ||
| 87 | - term: { | ||
| 88 | - field: "name", | ||
| 89 | - suggest_mode: "always" | ||
| 90 | - } | ||
| 91 | - } | 67 | + def searchable_models |
| 68 | + SEARCHABLE_TYPES.except(:all).keys.map { | model | model.to_s.classify.constantize } | ||
| 69 | + end | ||
| 70 | + | ||
| 71 | + def query_method expression, fields | ||
| 72 | + query_exp = {} | ||
| 73 | + if expression.blank? | ||
| 74 | + query_exp = { | ||
| 75 | + match_all: {} | ||
| 76 | + } | ||
| 77 | + else | ||
| 78 | + query_exp = { | ||
| 79 | + multi_match: { | ||
| 80 | + query: expression, | ||
| 81 | + type: "phrase", | ||
| 82 | + fields: fields, | ||
| 83 | + zero_terms_query: "none" | ||
| 92 | } | 84 | } |
| 93 | } | 85 | } |
| 94 | end | 86 | end |
| 95 | - query | 87 | + query_exp |
| 96 | end | 88 | end |
| 97 | 89 | ||
| 98 | - def searchable_models | ||
| 99 | - SEARCHABLE_TYPES.except(:all).keys.map { | model | model.to_s.classify.constantize } | 90 | + def get_query text="", klass=nil |
| 91 | + fields = klass.nil? ? (fields_from_models searchable_models) : (fields_from_models [klass]) | ||
| 92 | + query = { | ||
| 93 | + query: query_method(text, fields), | ||
| 94 | + sort: [ | ||
| 95 | + {"name.raw" => {"order" => "asc"}} | ||
| 96 | + ], | ||
| 97 | + suggest: { | ||
| 98 | + autocomplete: { | ||
| 99 | + text: text, | ||
| 100 | + term: { | ||
| 101 | + field: "name", | ||
| 102 | + suggest_mode: "always" | ||
| 103 | + } | ||
| 104 | + } | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | + query | ||
| 100 | end | 108 | end |
| 101 | 109 | ||
| 102 | end | 110 | end |
plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | <%= profile_image person %> | 3 | <%= profile_image person %> |
| 4 | </div> | 4 | </div> |
| 5 | <div class="right-side"> | 5 | <div class="right-side"> |
| 6 | - <%= person.created_at.strftime("%d %B %Y at %H:%M") %> - <%= person.name %> <span class="model-label"><%= _("Person") %></span> | 6 | + <%= person.created_at.strftime("%d %B %Y at %H:%M") %> - <span class="model-label"><%= _("Person") %></span> |
| 7 | <div class="body"> | 7 | <div class="body"> |
| 8 | <h2><%= link_to person.name, person.url %></h2> | 8 | <h2><%= link_to person.name, person.url %></h2> |
| 9 | <p><%= person.description %></p> | 9 | <p><%= person.description %></p> |