Commit 74295e2ef3df74d9f7b33e6461c6372121537c8b

Authored by Luciano Prestes
Committed by Gabriela Navarro
1 parent 0e3b436f
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

Refactor sort_by_relevance and move to search_helper

Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
lib/ext/search_controller.rb
@@ -102,28 +102,6 @@ class SearchController @@ -102,28 +102,6 @@ class SearchController
102 communities_list 102 communities_list
103 end 103 end
104 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 -  
127 def prepare_software_search_page 105 def prepare_software_search_page
128 prepare_software_infos_params 106 prepare_software_infos_params
129 prepare_software_infos_message 107 prepare_software_infos_message
lib/ext/search_helper.rb
@@ -6,4 +6,32 @@ module SearchHelper @@ -6,4 +6,32 @@ module SearchHelper
6 COMMON_PROFILE_LIST_BLOCK << :software_infos 6 COMMON_PROFILE_LIST_BLOCK << :software_infos
7 COMMON_PROFILE_LIST_BLOCK << :institutions 7 COMMON_PROFILE_LIST_BLOCK << :institutions
8 8
  9 + def sort_by_relevance list, text
  10 + text_splited = text.split
  11 +
  12 + relevance_map = {}
  13 + list.each do |element|
  14 + relevance_map[element] = yield(element)
  15 + end
  16 +
  17 + list.sort! do |a, b|
  18 + found_in_a, found_in_b = 1, 1
  19 +
  20 + relevance_list_a = relevance_map[a]
  21 + relevance_list_b = relevance_map[b]
  22 +
  23 + text_splited.each do |q|
  24 + relevance_list_a.count.times do |i|
  25 + relevance = i * -1
  26 + found_in_a = relevance if relevance_list_a[i].downcase.include?(q.downcase)
  27 + found_in_b = relevance if relevance_list_b[i].downcase.include?(q.downcase)
  28 + end
  29 + end
  30 +
  31 + found_in_a <=> found_in_b
  32 + end
  33 +
  34 + list
  35 + end
  36 +
9 end 37 end