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 93  
94 94 def sort_communities_list communities_list
95 95 communities_list.sort!{|a, b| a.name <=> b.name}
  96 +
96 97 if params[:sort] && params[:sort] == "desc"
97 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 101 end
99 102 communities_list
100 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 127 def prepare_software_search_page
103 128 prepare_software_infos_params
104 129 prepare_software_infos_message
... ...
views/search/_mpog_search_form.html.erb
... ... @@ -37,7 +37,8 @@
37 37 options_for_select(
38 38 [
39 39 [_("Name A-Z"), 'asc'],
40   - [_("Name Z-A"), 'desc']
  40 + [_("Name Z-A"), 'desc'],
  41 + [_("Relevance"), 'relevance']
41 42 ], :selected=>params[:sort])
42 43 ) %>
43 44 </div>
... ...