Skip to content

Instantly share code, notes, and snippets.

@knsmr
Created April 13, 2012 23:38
Show Gist options
  • Select an option

  • Save knsmr/2381000 to your computer and use it in GitHub Desktop.

Select an option

Save knsmr/2381000 to your computer and use it in GitHub Desktop.
$related_tags = {}
qestion_tags = [
%w(ruby rails ide),
%w(rails db),
%w(ruby rails db mysql),
%w(mysql sql),
%w(rails mysql),
%w(ruby rails postgres)
]
qestion_tags.each do |tags|
tags.each do |t|
$related_tags[t] ||= Hash.new
related = tags - [t]
related.each do |r|
$related_tags[t][r] ||= 0
$related_tags[t][r] += 1
end
end
end
require 'pp'
pp $related_tags
# {"ruby"=>{"rails"=>3, "ide"=>1, "db"=>1, "mysql"=>1, "postgres"=>1},
# "rails"=>{"ruby"=>3, "ide"=>1, "db"=>2, "mysql"=>2, "postgres"=>1},
# "ide"=>{"ruby"=>1, "rails"=>1},
# "db"=>{"rails"=>2, "ruby"=>1, "mysql"=>1},
# "mysql"=>{"ruby"=>1, "rails"=>2, "db"=>1, "sql"=>1},
# "sql"=>{"mysql"=>1},
# "postgres"=>{"ruby"=>1, "rails"=>1}}
def get_related_tags(tag)
$related_tags[tag]
end
p get_related_tags("rails")
# {"ruby"=>3, "ide"=>1, "db"=>2, "mysql"=>2, "postgres"=>1}
p get_related_tags("rails").sort_by{|tag,count| count}.reverse.map(&:first)
# ["ruby", "db", "mysql", "ide", "postgres"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment