Content recommendation modules
I think it'd be useful to have an overview of the various content recommendation modules in this group, and eventually a comparison review in the Handbook. I haven't used any of these apart from similar by terms, and may well have missed some, but we can expand as we go along. Additionally I've not used included anything like statistics, voting_api, views_bookmarks etc. which could probably be factored into a custom recommendation/ranking solution but aren't drop-in.
Content recommendation engine
Similar by terms
http://drupal.org/project/similarterms
I've used this and like it a lot. It only provides a block, no views integration yet, but in general it's provided very, very good matches without a major performance hit. Drupal 6 version has some bugs as of December '08.
Relevant content
http://drupal.org/project/relevant_content
Very, erm, similar to similar by terms - but it uses a different algorithm, has some different options for block creation and display, and the Drupal 6 version appears to be better supported than similarbyterms.
Similar nodes
Very similar to "similar by terms" but similarnodes requires views - see issue here for potential merging: http://drupal.org/node/255183
http://drupal.org/project/similarnodes
Also, doesn't currently work - http://drupal.org/node/293503
Also, no sign of a D6 version.
CCK Node reference
http://drupal.org/project/cck
Node reference allows to create node relationships at it's most basic (in D5 and D6). Together with the Rules or the Comment CCK modules, it should be possible to manage who has the rights to create new relationships.
Node Relativity
http://drupal.org/project/relativity
For connecting nodes in parent-child relationships (in D5 and D6).
The Node relativity access control module defines user roles (for D5 only, for now). An experimental patch adds access control for D6, but needs more work.
The Node relativity 3.0 module is a complete rewrite for D6 with much more functionality (but stalled?).
Node hierarchy
http://drupal.org/project/nodehierarchy
Node hierarchy is another module that allows nodes to be children of other nodes creating a tree-like hierarchy of content (in D5 and D6). Only users with editing rights can add children to a node.
Node2Node
http://drupal.org/project/node2node
This is yet another module that allows you to create relationships between nodes (inD6). It requires editing rights for this.
Organic groups
http://drupal.org/project/og
This module creates groups of related contents. Groups can have their own sub-communities within a site, and it implements a rich set of features related to blocks, languages, roles, taxonomy, themes, views, etc.
Similarity objects
By the same author as CRE. Intends to provide a framework for similarity rules.
This module allows the administrator to create a wide ranging set of similarity calculations. It can out of the box, calculate similar nodes of a specific type using the search index, taxonomy terms and node title. These similarities are calculated on cron run.
All these similarities are then exposed to Views. Using the provided argument, you can create a listing of similar items for a node. For instance, you can create a View page at node/%/similar. That page will use the Similarity argument (Similarity NID).
http://drupal.org/project/similarity
Similar entries
http://drupal.org/node/25974
Drupal 5.x & Drupal 6.x versions. Uses title and body fields, MySQL only. Not terms/taxonomy. Scans title and body fields and automatically generates a list of 'similar entries' based on an algorithm that apparently is used elsewhere. Seems to generate pretty good, but not always perfect matches. Works 'out of the box' - no configuration required. Outputs to a block. Good way to generate 'related pages' type list for nodes.
User related content
node -> user relationships
http://drupal.org/project/user_related_content
Pivots
Matches conversation topics around keywords etc. (being trialled on drupal.org)
Future development planned to provide a generic Recommender API module for D6
http://drupal.org/project/pivots
Sphere
Integration with the sphere.com web service - does both internal and external related content links
http://drupal.org/project/sphere
Memetracker
GSOC project.
http://drupal.org/project/memetracker
RelatedContent
http://drupal.org/project/relatedcontent
Documentation in the handbook. Relies on Views. Provides a tab on the node view.
Requires users to pick the related nodes, but can use views to suggest them.
Provides an API which could be used to make this process more automated.
Related Links
http://drupal.org/project/relatedlinks D5, port to 6 underway?
According to the project:
* Parsed links: links that are retrieved from the body of a node.
* Manual links: links that are added manually.
* Discovered links: links that are discovered by the module using various criteria, including the category terms of a node and suggestions provided by the search module (when enabled).
Related Block
http://drupal.org/project/related_block D5, looks pretty neglected
"This does a search for nodes that are closely related to the title and content of the current node. "
Recommended Posts (Recommended_Nodes?!)
http://drupal.org/project/recommended_nodes
... No useful description in the module, nobody seems sure what it does :-/
Associated nodes
Taxonomy and CCK based weight/scoring of relationships.
http://drupal.org/project/associated_nodes
More like this
http://drupal.org/project/morelikethis
Hot off the RSS Feed of new modules.
Node Recommendation
http://drupal.org/project/noderecommendation
Drupal 5.x & Drupal 6.x versions. Works off terms if using taxonomy, but also allows manual selection of nodes for individual pages with or without taxonomy. Outputs 'Related Pages' in a block. Good option for someone with not too much technical knowhow.
In Development
Related content
http://drupal.org/project/related_content
Editor or privileged user defined relationships - [author edit: not abandoned, demonstration code, development to begin soon: Its real purpose is to pull in recommendations from other modules listed here and make it very easy for people to select what they think are the related content, so I'm very interested in a common API...]
Related terms
Does a tag cloud of terms on taxonomy/term pages - depending on their frequency of association together on nodes. Nice idea, no release yet.
http://drupal.org/project/related_terms
Recommender API
Incorporate the classical user-user and item-item recommender algorithms. Aiming to be a generic algorithm engine for all other recommender modules. This is the D6 port to http://drupal.org/project/pivots.
Abandoned Modules
Related nodes
Abandoned in favour of Similar by terms
http://drupal.org/node/39822
Keywords (to help make this page easier to find): related pages, related nodes, related posts, similar pages, similar nodes, similar posts

As the author of both CRE
As the author of both CRE and Similarity objects, the plan is to reroll CRE to use similarity objects. As far as working code, i think you might be surprised how well it works. The idea is to slowly expand it and start to gobble up these other ones by providing multiple ways to draw relationships, using different algorithms. The major stopping point before a recommended release is building default views for it, and because the tables are created on the fly, it makes things a bit more difficult to just write default views.
As far as developing with it, it uses class based system with the hope that it makes it easier to write specialized similarity options.
Also important to note, a couple of these modules fail to respect node access: http://drupal.org/node/300470 or does so in a VERY inefficient manner. Similarity will respect node_access as Views2 respects it.
That issue boils down to how you stored related content, and does that storage allow for the db_rewrite_sql system to catch on.
Also plz note CRE is distinctly different. CRE makes personalized recommendations (the recommended content for user A is DIFFERENT from user B), whereas most of these modules would sugguest all the same. I would say remove CRE from this list... as it doesn't belong here, it is a different beast all together
I agree with the point made above
I agree with the point made above that CRE is completely different and doesn't belong in the list.
As it is, though, this is actually a very useful list. Once again I find myself wondering if this group should be renamed "Similar and Duplicated Projects" so that lists such as this one can be a positive resource and free of the negative spin I perceive coming from this group.
post pre-dates this group
I made this list quite a while ago in the content recommendation group, before starting this one - but then cross-posted later since these comparison posts are a useful thing to centralise in one place.
I'd hope the name of the group is taken firmly tongue in cheek, and 'Similar and Duplicated projects' is less fun - having your module included in a list isn't a negative thing necessarily at all. But we should perhaps highlight the (IMO very positive) mission statement more, or change the name if it's getting taken more seriously than it's intended.
edit: Also, in regards to CRE - a module which generates recommended content definitely belongs in a list comparing content recommendation modules - I don't see how it shouldn't. From the project page you only really get the idea that it's generating personalised recommendations if you read off to the wikipedia page about the slope one algorithm. Clarifying the real differences between superficially similar modules is as much the point of this group as identifying similar modules in the first place. There's a lot of confusion out there when trying to find modules to perform certain tasks - both for very new and very experienced Drupal users, and a lot of the research people do gets wasted.
The first post is a wiki, would be great if you'd edit the above descriptions/clarification in.
And isn't personalized
And isn't personalized recommendation still content recommendation? CRE recommends content for me ergo it's a content recommendation module. You'll notice that memetracker is on this list as well -- which while significantly different than any other module on the list, it still does content recommendation (it recommends you read the hot memes of the day).
On your other point Scott -- that all these duplicate content recommendation modules be consolidated under a uniform umbrella module like "Similarity Objects" -- I agree completely. I think there should be a content recommendation API which then the many types of content recommendation algorithms would talk through. The natural front end for all of this is Views (as content recommendation modules provide just that, another view of content on the site -- and on a slightly related note, Views (the module) is also a content recommendation module if you think about it -- it provides a focused slice of content from the site). A content recommendation API would provide an easy way for module writers to experiment with new recommendation algorithms without having to worry about providing Views support and other like functionality.
Kyle Mathews
I think there should be a
That would be the goal of similarity module. It provides the calculation routines and exposes the scores to views.
I want to add in a hook_algorithms and a hook_definitions, that allows other modules to expose "similarity" object classes and separately algorithms. But this is all vapor-ware at this point. I want to get this bad boy working with CRE, speed up the calculation with better limits. Really just the basics need to start working well first.
A lot, but seems none of
A lot, but seems none of what my client is asking (
I'm new to all this recommendation modules, can you guys recommend me a module to recommend nodes what users read most of times after/before current node?
I also would like some clues is this functionality fits somehow, would be easy to implement for me and worth to contribute as a patch or dependant module to one of the mentioned modules.