class Jekyll::RelatedPosts
def build
def build return [] unless site.posts.size > 1 if site.lsi build_index lsi_related_posts else most_recent_posts end end
def build_index
def build_index self.class.lsi ||= begin lsi = Classifier::LSI.new(:auto_rebuild => false) display("Populating LSI...") site.posts.each do |x| lsi.add_item(x) end display("Rebuilding index...") lsi.build_index display("") lsi end end
def display(output)
def display(output) $stdout.print("\n") $stdout.print(Jekyll.logger.formatted_topic(output)) $stdout.flush end
def initialize(post)
def initialize(post) @post = post @site = post.site require 'classifier' if site.lsi end
def lsi_related_posts
def lsi_related_posts self.class.lsi.find_related(post.content, 11) - [post] end
def most_recent_posts
def most_recent_posts recent_posts = site.posts.reverse - [post] recent_posts.first(10) end