Skip to content
Snippets Groups Projects
Commit ff6cc288 authored by bfs15's avatar bfs15
Browse files

Tag search now returning proper learning objects

parent 040cfc7f
No related branches found
No related tags found
No related merge requests found
......@@ -44,7 +44,7 @@ class V1::SearchController < ApplicationController
# GET v1/search/tag
# GET v1/search/tag.json
def tag
results = TagSearchService.search(Tag.find(tag_search_params[:id]))
results = TagSearchService.search(Tag.find(tag_search_params[:id]), 2)
render json: paginate(results)
end
......
......@@ -83,7 +83,8 @@ module TagSearchService
# lo.tags.each {|t| print t.name+" | "}
# # puts ""
# end
return merged_los
return merged_los.map { |lc| lc[0] }
end
def merge(search_los, relevant_los)
......@@ -113,27 +114,27 @@ module TagSearchService
min = relevant_los.last[1]
# puts "Max=#{max} Min=#{min}" if DEBUG
relevant_los.each do |rlo|
rlo[1] = max_boost*(rlo[1]*(1+PADM)-min)/(max-min)
# puts "#{rlo[1]}" if DEBUG
relevant_los.each do |rlc|
rlc[1] = max_boost*(rlc[1]*(1+PADM)-min)/(max-min)
# puts "#{rlc[1]}" if DEBUG
end if max != 0
# puts "Changing search array format" if DEBUG
search_los.each do |slo|
relevant_los.each_with_index do |rlo, index|
if slo.id == rlo[0]
slo.search_hit['_score'] = slo.search_hit['_score'] + rlo[1]
relevant_los.each_with_index do |rlc, index|
if slo.id == rlc[0].id
slo.search_hit['_score'] = slo.search_hit['_score'] + rlc[1]
relevant_los.delete_at(index)
end
end
merged_los << [slo.id, slo.search_hit['_score']]
merged_los << [slo, slo.search_hit['_score']]
# puts "#{merged_los[merged_los.length - 1][0]}: #{merged_los[merged_los.length - 1][1]}" if DEBUG
end
merged_los.push(*relevant_los)
# puts "Sorting LOs...\n" if DEBUG
# highest ranks first
merged_los = merged_los.sort_by { |lo| lo[1]*-1 }
merged_los = merged_los.sort_by { |lc| lc[1]*-1 }
return merged_los
end
......@@ -156,7 +157,7 @@ module TagSearchService
# puts tag.name+" | "+ct[:id].to_s+" | "+ct[:rank].to_s+" | "+tags[ct[:id]][:rank].to_s if DEBUG
tag.taggings.where(taggable_type: "LearningObject").each do |tagging|
lo = tagging.taggable
if los_ranked[lo.id].nil?
if los_ranked[lo].nil?
# Uncomment the next line if you want to sort by local tag frequency
# los_ranked[lo.id] = relevance_frequency_rank(lo, close_tags)
......@@ -164,7 +165,7 @@ module TagSearchService
# los_ranked[lo.id] = relevance_frequency_rank_global(lo, close_tags, freq_cluster)
# Uncomment the next line if you want to sort by tag cluster rank
los_ranked[lo.id] = relevance_raw_rank(lo, close_tags)
los_ranked[lo] = relevance_raw_rank(lo, close_tags)
# puts "Found lo of id=#{lo.id} with rank=#{los_ranked[lo.id]}" if DEBUG
end
end
......@@ -172,7 +173,7 @@ module TagSearchService
# puts "Sorting LOs...\n" if DEBUG
# highest ranks first
los_ranked = los_ranked.sort_by { |id, rank| rank*-1 }
los_ranked = los_ranked.sort_by { |lo, rank| rank*-1 }
return los_ranked.first(limit) if limit > 0
return los_ranked
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment