From a82bdd13bc89a61461d09218b1d67a0e35a379d1 Mon Sep 17 00:00:00 2001 From: Macartur Sousa Date: Wed, 15 Jun 2016 14:39:54 -0300 Subject: [PATCH] ELasticsearch: Refacted elasticsearch controller --- plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb | 99 +++------------------------------------------------------------------------------------------------ plugins/elasticsearch/lib/elasticsearch_plugin/api.rb | 11 ++++++++++- 2 files changed, 13 insertions(+), 97 deletions(-) diff --git a/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb b/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb index 471aa70..d729cc0 100644 --- a/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb +++ b/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb @@ -1,16 +1,8 @@ +require_relative '../helpers/elasticsearch_helper' + class ElasticsearchPluginController < ApplicationController no_design_blocks - - SEARCHABLE_TYPES = { :all => { label: _("All Results")}, - :community => { label: _("Communities")}, - :event => { label: _("Events")}, - :person => { label: _("People")} - } - - SEARCH_FILTERS = { :lexical => { label: _("Alphabetical Order")}, - :recent => { label: _("More Recent Order")}, - :access => { label: _("More accessed")} - } + include ElasticsearchHelper def index search() @@ -24,89 +16,4 @@ class ElasticsearchPluginController < ApplicationController process_results end - def process_results - @query = params[:query] - - if @selected_type == :all - @results = search_from_all_models - else - @results = search_from_model @selected_type - end - end - - private - - def fields_from_model - klass::SEARCHABLE_FIELDS.map do |key, value| - if value[:weight] - "#{key}^#{value[:weight]}" - else - "#{key}" - end - end - end - - def get_query text, klass=nil - query = {} - unless text.blank? - text = text.downcase - query = { - query: { - match_all: { - } - }, - filter: { - regexp: { - name: { - value: ".*" + text + ".*" } - } - }, - suggest: { - autocomplete: { - text: text, - term: { - field: "name", - suggest_mode: "always" - } - } - } - - } - end - query - end - - - def search_from_all_models - models = [] - query = get_query params[:query] - - SEARCHABLE_TYPES.keys.each {| model | models.append( model.to_s.classify.constantize) if model != :all } - Elasticsearch::Model.search(query, models, size: default_per_page).page(params[:page]).records - end - - def search_from_model model - begin - klass = model.to_s.classify.constantize - query = get_query params[:query], klass - klass.search(query, size: default_per_page).page(params[:page]).records - rescue - [] - end - end - - def define_searchable_types - @searchable_types = SEARCHABLE_TYPES - @selected_type = params[:selected_type].nil? ? :all : params[:selected_type].to_sym - end - - def define_search_fields_types - @search_filter_types = SEARCH_FILTERS - @selected_filter_field = params[:selected_filter_field].nil? ? SEARCH_FILTERS.keys.first : params[:selected_filter_field].to_sym - end - - def default_per_page - 10 - end - end diff --git a/plugins/elasticsearch/lib/elasticsearch_plugin/api.rb b/plugins/elasticsearch/lib/elasticsearch_plugin/api.rb index 225193f..cb8a068 100644 --- a/plugins/elasticsearch/lib/elasticsearch_plugin/api.rb +++ b/plugins/elasticsearch/lib/elasticsearch_plugin/api.rb @@ -1,10 +1,19 @@ +require_relative '../../helpers/elasticsearch_helper' + + class ElasticsearchPlugin::API < Grape::API include Api::Helpers resource :search do get do - target = Person.first present target, :with => Api::Entities::Person end + + get 'types' do + types = {types: ElasticsearchHelper::SEARCHABLE_TYPES.stringify_keys.keys} + present types, with: Grape::Presenters::Presenter + end + end + end -- libgit2 0.21.2