Commit 0e3b436f08f686a1594f08078fb15948c463c68f

Authored by Luciano Prestes
Committed by Gabriela Navarro
1 parent 13a802fa
Exists in master and in 79 other branches add_sisp_to_chef, add_super_archives_plugin, api_for_colab, automates_core_packing, backup_not_prod, changes_in_buttons_on_content_panel, colab_automated_login, colab_spb_plugin_recipe, colab_widgets_settings, design_validation, dev_env_minimal, disable_email_dev, fix_breadcrumbs_position, fix_categories_software_link, fix_edit_institution, fix_edit_software_with_another_license, fix_get_license_info, fix_gitlab_assets_permission, fix_list_style_inside_article, fix_list_style_on_folder_elements, fix_members_pagination, fix_merge_request_url, fix_models_translations, fix_no_license, fix_software_api, fix_software_block_migration, fix_software_communities_translations, fix_software_communities_unit_test, fix_style_create_institution_admin_panel, fix_superarchives_imports, fix_sym_links_noosfero, focus_search_field_theme, gov-user-refactoring, gov-user-refactoring-rails4, header_fix, institution_modal_on_rating, kalibro-conf-refactoring, kalibro-processor-package, lxc_settings, margin_fix, mezuro_cookbook, prezento, refactor_download_block, refactor_software_communities, refactor_software_for_sisp, register_page, release-process, release-process-v2, remove-unused-images, remove_broken_theme, remove_secondary_email_from_user, remove_sisp_buttons, removing_super_archives_email, review_message, scope2method, signals_user_noosfero, sisp_catalog_header, sisp_colab_config, sisp_dev, sisp_dev_master, sisp_simple_version, software_as_organization, software_catalog_style_fix, software_communities_html_refactor, software_infos_api, spb_minimal_env, spb_to_rails4, spec_refactor, stable-4.1, stable-4.2, stable-4.x, temp_soft_comm_refactoring, theme_header, theme_javascript_refactory, thread_dropdown, thread_page, update_search_by_categories, update_software_api, update_softwares_boxes

Add relevance order by name and finality in software_search

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
lib/ext/search_controller.rb
@@ -93,12 +93,37 @@ class SearchController @@ -93,12 +93,37 @@ class SearchController
93 93
94 def sort_communities_list communities_list 94 def sort_communities_list communities_list
95 communities_list.sort!{|a, b| a.name <=> b.name} 95 communities_list.sort!{|a, b| a.name <=> b.name}
  96 +
96 if params[:sort] && params[:sort] == "desc" 97 if params[:sort] && params[:sort] == "desc"
97 communities_list.reverse! 98 communities_list.reverse!
  99 + elsif params[:sort] && params[:sort] == "relevance"
  100 + communities_list = sort_by_relevance(communities_list, params[:query]){ |community| [community.software_info.finality, community.name] }
98 end 101 end
99 communities_list 102 communities_list
100 end 103 end
101 104
  105 + def sort_by_relevance list, text
  106 + queries = text.split
  107 +
  108 + list.sort! do |a, b|
  109 + found_in_a, found_in_b = 1, 1
  110 +
  111 + relevance_list_a = yield(a)
  112 + relevance_list_b = yield(b)
  113 +
  114 + queries.each do |q|
  115 + relevance_list_a.count.times do |i|
  116 + found_in_a = (i * -1) if relevance_list_a[i].downcase.include?(q.downcase)
  117 + found_in_b = (i * -1) if relevance_list_b[i].downcase.include?(q.downcase)
  118 + end
  119 + end
  120 +
  121 + found_in_a <=> found_in_b
  122 + end
  123 +
  124 + list
  125 + end
  126 +
102 def prepare_software_search_page 127 def prepare_software_search_page
103 prepare_software_infos_params 128 prepare_software_infos_params
104 prepare_software_infos_message 129 prepare_software_infos_message
views/search/_mpog_search_form.html.erb
@@ -37,7 +37,8 @@ @@ -37,7 +37,8 @@
37 options_for_select( 37 options_for_select(
38 [ 38 [
39 [_("Name A-Z"), 'asc'], 39 [_("Name A-Z"), 'asc'],
40 - [_("Name Z-A"), 'desc'] 40 + [_("Name Z-A"), 'desc'],
  41 + [_("Relevance"), 'relevance']
41 ], :selected=>params[:sort]) 42 ], :selected=>params[:sort])
42 ) %> 43 ) %>
43 </div> 44 </div>