Recommendation Engine .NET collaborative filtering framework
Real-time product recommendation system

NReco Recommendation System for .NET


  • Pure C# recommendation engine: port of Apache Mahout "Taste" Recommendation/Collaborative filtering Framework with dependencies (about 800kb of code) and unit test (283 original tests are passed). Does not depend on 3rd party libraries or native applications.
  • Mature framework for storage, evaluation, online and offline computation of recommendations
  • Supports all major types of production-ready recommenders: User-based, Item-based, SVD-based
  • Similarity in users or items: Euclidian distance, Surprise and Coincidence (LLR), Tanimoto coefficient, Pearson correlation and others
  • Designed for performance, scalability and flexibility: optimized implementations of in-memory structures and high-precision math functions (inlcuding Mersenne Twister random generator), parallel implementations of SVD-factorizers, computation cache support etc.
  • Open source: NReco.Recommender on GitHub (AGPL license)
  • Supports both full .NET Framework and .NET Core, can be used as REST microservice from any web application
  • Examples:
    • MovieLensMvc: MVC app that makes recommendations by MovieLens dataset
    • SqlDbSource: item-to-item recommendations by data from SQL database ('northwind' orders)
    • Evaluator: WinForms utility that helps to evaluate recommendation engine parameters (like similarity function) for both user-based and item-based recommendation algorithms.

download and pricing

quick purchase process

  • 1 Choose a package
  • 2 Pay online Online payment methods
  • 3 Download the package
NReco Recommender is a recommendation system library that takes users' behaviour (usage statistics, preferences, ratings) and from that tries to find items that other users might like. Collaborative filtering algorithms are especially effective for recommending products, music, books, videos etc.

how to use

  1. Add reference to NReco.Recommender.dll assembly
    OR install NReco.Recommender nuget package
  2. Configure recommendation engine:
    var model = new FileDataModel("data.csv");
    var similarity = new LogLikelihoodSimilarity(model);
    var neighborhood = new NearestNUserNeighborhood(3, similarity, model);
    var recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
    var recommendedItems = recommender.Recommend(userId, 5);
  3. Have a question?
    Feel free to ask.
    What's next?

try it online

Select your favourite films (recommendations by MovieLens dataset):
Terminator 2: Judgment Day (1991)
Aliens (1986)
Get recommendations

frequently asked questions

  1. Choose what do you want to recommend; this may be anything like products, articles, books, movies, cars, tasks etc
  2. Collect or infer users preferences from existing data (transactions in SQL database, logs etc): pairs like userID,itemID or userID,itemID,score
  3. Evaluate and choose appropriate recommendation algorithm and its parameters; NReco.Recommender includes Evaluator GUI utility that simplifies this process.
  4. Integrate recommendation engine into your application: make automatic predictions about user interests in the real time, or pre-calculate recommendations into simple (item) → (recommended items) hash table.
Until you know that you need a concrete IRecommender implementation, in most cases you can choose between the following generic implementations:
  • User-based: recommended items are based on the similarity between two users. Use this recommender if you want to get personalized recommendation and already know concere user's preferences; recommendation is based on assumption that 2 similar users "share" their preferences in items. This approach works fine for recommening movies, TV-shows, music etc.
  • Item-based: recommended items are based on the similarity between items. This kind of recommendation is usedful if you know only the fact that new user is interested in concrete item: then, it is possible to recommend items that are similar to this concrete item (by preferences data) like Amazon does. This approach often used in e-Commerce; also it is possible to pre-calculate all recommendations in background (as usually product catalog has limited number of items) and show them without affecting website performance at all.
NReco.Recommender free version (available on github ) is published under AGPL license; it can be used for free in GPL projects and for educational/testing purposes.

Buying a commercial license is mandatory as soon as you develop commercial activities distributing the NReco Recommender inside your product or deploying it on a network without disclosing the source code of your own applications under the AGPL license.
These activities include:
  • offering paid services to customers as an ASP
  • making recommendations in the cloud or in a web application
  • shipping NReco Recommender with a closed source product


Book Mahout in Action PDF version
Part 1 is about making recommendations: what is collaborative filtering, how to make recommendations with Mahout. All code snippets are applicable to Recommender. This intoduction is strongly recommended if you're new to collaborative filtering and recommendation algorithms.
Get Started Mahout-based collaborative filtering engine overview
The best entry point into Mahout recommender engine. Everything in this article is applicable to NReco Recommender.
How-To Creating a User-Based Recommender in 5 minutes
Quick how-to that explains how to use Mahout CF framework on practice.