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 102 communities_list
103 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 105 def prepare_software_search_page
128 106 prepare_software_infos_params
129 107 prepare_software_infos_message
... ...
lib/ext/search_helper.rb
... ... @@ -6,4 +6,32 @@ module SearchHelper
6 6 COMMON_PROFILE_LIST_BLOCK << :software_infos
7 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 37 end
... ...