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 | 64 | |
| 65 | 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 | 86 | end |
| 95 | - query | |
| 87 | + query_exp | |
| 96 | 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 | 108 | end |
| 101 | 109 | |
| 102 | 110 | end | ... | ... |
plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <%= profile_image person %> |
| 4 | 4 | </div> |
| 5 | 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 | 7 | <div class="body"> |
| 8 | 8 | <h2><%= link_to person.name, person.url %></h2> |
| 9 | 9 | <p><%= person.description %></p> | ... | ... |