There are no reviews yet. Be the first to send feedback to the community and the maintainers!
ActsAsRecommendable =================== ActsAsRecommendable is a plugin for Rails that simplifies collaborative filtering The plugin provides a mechanism for finding loose associations between users and items which we can tell you * Given a user, return other similar users based on what items they have all bought/bookmarked/rated/etc * Given a user, return recommended items based on the items bought/bookmarked/rated/etc by that user and the items bought/bookmarked/rated/etc by other users. The plugin calculations can be made online and offline and stored using the rails cache (such as memcache) for online retrieval. Online retrieval of recommendations uses item-based collaborative filtering using the offline items similarity matrix stored in the cache. This can give up-to-date results with a much lower processing overhead. Much thanks to Toby Segaran and his excellent book Programming Collective Intelligence (http://oreilly.com/catalog/9780596529321/). Features ======== Use join rating scores Using abitary calculated scores Similar Items Recommended Users Cached dataset Current Release =============== v0.1 should be considered early alpha and not ready for production applications. Lots of performance optimisations still to be done. Example ======= class Book < ActiveRecord::Base has_many :user_books has_many :users, :through => :user_books end class UserBook < ActiveRecord::Base belongs_to :book belongs_to :user end class User < ActiveRecord::Base has_many :user_books has_many :books, :through => :user_books acts_as_recommendable :books, :through => :user_books end user = User.find(:first) user.similar_users #=> [...] user.recommended_books #=> [...] book = Book.find(:first) book.similar_books #=> [...] Example 2 ========= class Movie < ActiveRecord::Base has_many :user_movies has_many :users, :through => :user_movies end class UserMovie < ActiveRecord::Base belongs_to :movie belongs_to :user end class User < ActiveRecord::Base has_many :user_movies has_many :movies, :through => :user_movies acts_as_recommendable :movies, :through => :user_movies, :score => :score # 'score' is an attribute on the users_movies table end user = User.find(:first) user.similar_users #=> [...] user.recommended_movies #=> [...] Example 3 ========= class Book < ActiveRecord::Base has_many :user_books has_many :users, :through => :user_books, :use_dataset => true # Uses cached dataset end class UserBook < ActiveRecord::Base belongs_to :book belongs_to :user end class User < ActiveRecord::Base has_many :user_books has_many :books, :through => :user_books acts_as_recommendable :books, :through => :user_books end user = User.find(:first) user.recommended_books #=> [...] # The example above uses a cached dataset. # You need to generate a cached dataset every so often (depending on how much your content changes) # You can do that by calling the rake task recommendations:build, you should run this with a cron job every so often. # If you only want to use the dataset in production put this in production.rb: User.aar_options[:use_dataset] = true # Note: # user.similar_users doesn't use the dataset # # The advantage of using a dataset is that you don't need to load all the users & items into # memory (which you do normally). The disadvantage is that you won't get as accurate results. # Contact ======= [email protected] Copyright (c) 2008 Made by Many Ltd, released under the MIT license
juggernaut
[DEPRECATED] Realtime server push with node.js, WebSockets and Cometmonocle
Link and news sharingabba
A/B testing frameworkholla
Holla! - Rich JavaScript Applicationjquery.magicmove
Animate DOM transitions.bowline
Ruby/JS GUI and Binding framework (deprecated)stylo
Spine/CoffeeScript example GUI designersaasy
Rails SaaS and SSO solutiongfx
CSS3 3D animation librarynestful
Simple Ruby HTTP/REST client with a sane APIace
Sinatra for Nodesupermodel
Ruby in-memory modelsbook-assets
Files for the O'Reilly book JavaScript Web Applicationsgo
gotrevi
An opinionated Sinatra app generatorflarevideo
HTML5 & Flash Video Playerspine.todos
A Backbone alternative ideahermes
Messaging re-inventedmotivation
New Chrome tab page showing your agejuggernaut_plugin
Realtime Railsspine.contacts
Spine demo contact managersprockets-commonjs
Adds CommonJS support to Sprocketsmacgap-rb
Generator for MacGapsinatra-blog
A example Sinatra blogheadsup
A simple Heads Up displaycatapult
A Sprockets/Rack build toolremail
RESTful email for Railsspine.rails3
Sample app demonstrating Spine and Rails integrationbowline-twitter
Bowline Twitter clientwysiwyg
sinatra-pubsub
Push & Streaming for Sinatra.push-mac
stitch-rb
Stitch ported to Rubydhash
Compare image similarity with a dhash101-school
AI generated coursesichabod
Headless JavaScript testing with WebKitcolorcanvas
roauth
*Simple* Ruby OAuth librarypush
juggernaut_gem
Realtime Railsspine.mobile
Spine Mobile Frameworksuper.js
Simple JavaScript framework for building RIAs (with jQuery)oped
Email based diaryremail-engine
RESTful email for Rails - see http://github.com/maccman/remailsyncro
Synchronize state across remote clients.spine.mobile.currency
Spine Mobile currency convertor examplesourcemap
Ruby library for using Source Mapssuperapp
JavaScript state machine and class abstraction for building RIAs (deprecated! - use http://github.com/maccman/super.js)sprockets-source-url
Adds @sourceURL support to Sprocketsspine.infinite
Infinite scrolling with Spine & Railsbowline-desktop
wxWidgets/Ruby/Webkit framework for Bowline appsymockup
UI mockups using HTML and CSSsupermodel-js
SuperModel in JavaScript (deprecated! - use http://github.com/maccman/super.js)zombies
A Facebook/Spine game.quora2
Redesigning Quora's interface, turning it into a JavaScript web application powered by Spine.spine.mobile.contacts
Example Spine Mobile Apphumanapi
request-profile
API to access autocomplete datagwo
Rails plugin integrating Google Web Optimizer for AB testscft
jquery.upload.js
Upload files using Ajaxspine.realtime
Realtime Spine app with Railsrbyte
Byte compile Ruby 1.9.1 files and "require" support for loading compiled files.phonegap
Gem for building PhoneGap appssegment-hooks
Trigger arbitrary JavaScript from Segment.com eventsspine.mobile.workout
Spine Mobile Workouts Examplerestful_email
AppEngine that provides a RESTful interface to sending emails (decrep - use http://github.com/maccman/remail)csbook
statster
Merb Web Analyticsrack-modulr
Use CommonJS modules in your Rack/Rails applicationsblossom
Demonstration chat appdtwitter
Distributed Twittercanonical
Rails plugin providing helper for canonical URLsjquery.drop.js
jQuery lib abstracting the drag/drop APIalexmaccaw
Portfolioomniauth-humanapi
OmniAuth strategy for HumanAPI.the-managers-handbook
syncro-js
JavaScript library for Syncroless-rb
Less using ExecJSspine.tutorials
Spine tutorials (DEPRECATED - use http://spinejs.com)bowline-bundler
Specialized version of the Bundler gem for Bowline appsserveup
gdata
Recent clone of http://code.google.com/p/gdata-ruby-util (with Ruby 1.9 support)package-jquery
package-jquery-ui
jquery.tmpl
jQuery.tmpl for Hemnode-twitter-stream
Twitter Streaming API Library for Node.jscounterman
monocle-assets
jlink
jQuery data binding library - bind objects to HTML elementscloudflare-r2-edge
super.todos
Port of Backbone.js Todos to Superjeco
jQuery extension to ecoinvoices
Test Spine applike-detector
bp-p2p
Browser Plus P2Prenoir
Simple Canvas physics engine using Verlet Integrationhnv2
Hacker News V2elb-nginx-vhosts
socialmod
Ruby/Python/PHP client libsLove Open Source and this site? Check out how you can help us