Recommender API provides a set of easy-to-use, fully-documented APIs and computational tools to help you write Drupal content recommendation sub-modules.
The current release is 7.x-6.x. Read more in FAQ if you want to upgrade from previous releases. Sub modules will NOT work if they are not upgraded to be compatible with RecAPI 7.x-6.x. See
Information about installation, administration, and sub-module development can be found in README.txt that comes with the module.
Modules built with Recommender API
- Browsing History Recommender: "Users who browsed this node also browsed"; personalized node recommendation based on users' browsing history.
- Commerce Recommender: Personalized products recommendations based on customers purchasing history.
- OG Similar groups module: "Users who joined this group also joined"
- Ubercart Products Recommender: "Customers who ordered this also ordered" and personalized recommendation "Recommended for you"
- Fivestar Recommender: User-to-user and Item-to-item (used in Amazon.com) recommendations for Fivestar module.
- Points Voting Recommender: User-to-user and Item-to-item (used in Amazon.com) recommendations for Up/Down and Plus 1 modules.
- Flag Recommender: Recommender for the Flag module.
A recommender system matters to your site because it increases user engagement and increases site revenue. Recommenders are widely used in sites like Amazon.com, Netflix.com, Pandora.com, and many more.
The goal of Recommender API is to bring out-of-the-box recommender systems to any Drupal site.
- Two implementations of recommendation engines (see FAQ for more details):
- The PHP engine provides an easy way to compute recommendations in Drupal for small site with small dataset.
- The Java engine offers more advanced features and better performance for large site.
- Views integration for customizable recommendations display.
- Rules integration.
- A simple example module to illustrate how to write sub-modules.
I'm a previous user of Recommender API and its sub modules. How do I upgrade to release 7.x-6.x?
7.x-6.x is NOT compatible to previous releases and does not offer a direct upgrade path. You have to uninstall previous releases and reinstall the new release. Some sub modules are not yet upgraded to be compatible with 7.x-6.x, and will not work with this release. Please check their documentation before upgrading.
If you see any old features missing from the new release, please submit an issue.
What about Drupal 6 and Drupal 8 support?
This module will have a D8 port. D6 backport is not planned. You can still use the old D6 release, which is not compatible to the D7 release.
How does this module compare to other recommender cloud service?
There are a few external recommender cloud service you can integrate with your Drupal site. Here are a few advantages to use Recommender API module instead of other cloud-based services:
- Cost: you don't have to pay a subscription fee to use external services.
- Flexibility: you can customize the Recommender API module and sub modules to meet your specific needs when your business grow.
- Data ownership and security: you don't have to export data to external services; you own your data.
- Ease of use: the module is simple to install/config/run and works out of the box if you use the PHP engine for a small dataset.
What are the differences between the PHP engine and the Java engine?
The PHP engine implements recommender algorithms in native PHP. You have to run the PHP engine on the Drupal production server. It doesn't have high performance, and you might see "Timeout" and "Out of memory" errors due to PHP limitations.
The Java engine implements recommender algorithms using the Apache Mahout library. You can run it in a distributed computing environment and it can handle large amount of data. It supports a wide range of advanced features (such as Hadoop clusters support) and more algorithms (SVD++ etc).
In short, use the PHP engine for small site with small dataset, and use the Java engine for large site and more advanced features.
How to improve performance for recommendation computation?
Consider these options:
- Use the Java agent program on another server instead of using the PHP engine.
- Use "incremental update" instead of full computation every time (to be implemented).
- Use Hadoop in the Java agent program (to be implemented).
- Reduce the number of recommendations for each user/item.
- Use database storage other than
$database['default']['default']for recommendation data (requires customization).
Some old benchmark data:
Using the GroupLens dataset with a single 2GHz processing unit:
- 100K ratings (1000 users, 1700 items): 9 minutes.
- 1M ratings (6000 users, 4000 items): 12 hours.
- 10M ratings (72,000 users, 10,000 items): N/A.
Using 6 concurrent 2GHz processing units:
- 100K ratings (1000 users, 1700 items): 2 minutes.
- 1M ratings (6000 users, 4000 items): 2 hours.
- 10M ratings (72,000 users, 10,000 items): 11 days 20 hours.
Computational complexity is about O(N^2), so expect to see squared growth in computing time as your dataset grows.
Where to find more information?
- The module's homepage on Drupal.org (this page).
- README.txt file in the module.
- Project page for the Java agent program: https://github.com/danithaca/drupal-recommender
- Drupal Computing module.
- The module's issue queue on Drupal.org.
- The module's issue queue on github for the Java agent.
The developer of the module also provides consulting services. See more at http://consulting.knowsun.com
- Maintenance status: Actively maintained
- Development status: Under active development
- Module categories: Commerce/Advertising, Evaluation/Rating, Site Navigation, Statistics, Third-party Integration, Utility
- Reported installs: 594 sites currently report using this module. View usage statistics.
- Downloads: 24,227
- Last modified: December 2, 2014