Revert "Return the actual sample size used for related tag calculations"

This reverts commit be0bb42ba9.
This commit is contained in:
evazion
2020-03-09 22:18:57 -05:00
parent cb11d818b1
commit 0317033d58
3 changed files with 14 additions and 48 deletions

View File

@@ -6,14 +6,13 @@ module RelatedTagCalculator
search_sample_size = [search_count, search_sample_size].min
return [] if search_sample_size <= 0
tags, sample_count = frequent_tags_for_search(tag_query, search_sample_size: search_sample_size, category: category)
tags = tags.limit(tag_sample_size)
tags = frequent_tags_for_search(tag_query, search_sample_size: search_sample_size, category: category).limit(tag_sample_size)
tags = tags.sort_by do |tag|
# cosine distance(tag1, tag2) = 1 - {{tag1 tag2}} / sqrt({{tag1}} * {{tag2}})
1 - tag.overlap_count / Math.sqrt(tag.post_count * search_count.to_f)
end
[tags, sample_count]
tags
end
def self.frequent_tags_for_search(tag_query, search_sample_size: 1000, category: nil)
@@ -29,7 +28,7 @@ module RelatedTagCalculator
tags = tags.where("tags.post_count > 0")
tags = tags.where(category: category) if category.present?
tags = tags.order("overlap_count DESC, tags.post_count DESC, tags.name")
[tags, sample_posts.length]
tags
end
def self.frequent_tags_for_post_array(posts)
@@ -41,7 +40,7 @@ module RelatedTagCalculator
Cache.get("similar_tags:#{tag_query}", cache_timeout, race_condition_ttl: 60.seconds) do
ApplicationRecord.with_timeout(search_timeout, []) do
CurrentUser.without_safe_mode do
RelatedTagCalculator.similar_tags_for_search(tag_query)[0].take(max_tags).pluck(:name)
RelatedTagCalculator.similar_tags_for_search(tag_query).take(max_tags).pluck(:name)
end
end
end

View File

@@ -42,44 +42,12 @@ class RelatedTagQuery
end
end
def sample_count
if type == "frequent"
frequent_count
elsif type == "similar"
similar_count
elsif type == "like" || query =~ /\*/
0
elsif category.present?
frequent_count
elsif query.present?
similar_count
else
0
end
end
def frequent_tags_query
@frequent_tags_query ||= RelatedTagCalculator.frequent_tags_for_search(query, category: category_of).take(limit)
end
def frequent_tags
frequent_tags_query[0]
end
def frequent_count
frequent_tags_query[1]
end
def similar_tags_query
@similar_tags_query ||= RelatedTagCalculator.similar_tags_for_search(query, category: category_of).take(limit)
@frequent_tags ||= RelatedTagCalculator.frequent_tags_for_search(query, category: category_of).take(limit)
end
def similar_tags
similar_tags_query[0]
end
def similar_count
similar_tags_query[1]
@similar_tags ||= RelatedTagCalculator.similar_tags_for_search(query, category: category_of).take(limit)
end
# Returns the top 20 most frequently added tags within the last 20 edits made by the user in the last hour.
@@ -133,7 +101,6 @@ class RelatedTagQuery
{
query: query,
category: category,
sample_count: sample_count,
tags: tags_with_categories(tags.map(&:name)),
tags_overlap: tags_overlap,
wiki_page_tags: tags_with_categories(wiki_page_tags),