RecommenderAPI logo

This project is not covered by Drupal’s security advisory policy.

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 #2377503: Upgrade Recommender API helper modules to be compatible to 7.x-6.x

Information about installation, administration, and sub-module development can be found in README.txt that comes with the module.

Modules built with Recommender API

Why Recommender?

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.

Module Features

  • 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.

FAQ

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 developer of the module also provides consulting services. See more at http://consulting.knowsun.com

Supporting organizations: 
Sponsored the initial development of the code.

Project information

Releases