Commit 74295e2ef3df74d9f7b33e6461c6372121537c8b
Committed by
Gabriela Navarro
1 parent
0e3b436f
Exists in
master
and in
5 other branches
Refactor sort_by_relevance and move to search_helper
Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
Showing
2 changed files
with
28 additions
and
22 deletions
Show diff stats
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 |