Как инженер поисковой системы, я думаю, что эту проблему лучше всего решить, используя два метода в сочетании.
Технология 1, Поиск ( TF-IDF или другие алгоритмы)
Используйте поиск, чтобы создать базовую модель для контента, в котором у вас нет пользовательской статистики.Существует целый ряд технологий, но я думаю, что кодовая база Apache Lucene / Solr , безусловно, является наиболее зрелой и стабильной.
Технология 2, Рекомендации для пользователей ( k-ближайшая окрестность другие алгоритмы)
Когда вы начнете получать пользовательскую статистику, используйте ее для улучшения модели релевантности, используемой системой анализа текста.Быстро растущей базой кода для решения подобных проблем является проект Apache Mahout .