2013-05-16 2 views
2

Я хотел реализовать разбиение на страницы с помощью mahout (specfying, offset и max result), как я могу достичь этого с помощью Mahout? так скажем, у меня есть этот код, который генерирует рекомендациюApache Mahout. Ограничение или смещение для рекомендаций

File ratingsFile = new File("audio-dummy-bool.csv");       
DataModel model = new FileDataModel(ratingsFile); 

    CachingRecommender cachingRecommender2 = new CachingRecommender(new SlopeOneRecommender(model)); 





// for all users 
for (LongPrimitiveIterator it = model.getUserIDs(); it.hasNext();){ 
    long userId = it.nextLong(); 

    // get the recommendations for the user 
    List<RecommendedItem> recommendations = cachingRecommender.recommend(userId, 10); 

    // if empty write something 
    if (recommendations.size() == 0){ 
     System.out.print("User "); 
     System.out.print(userId); 
     System.out.println(": no recommendations"); 
    } 

    // print the list of recommendations for each 
    for (RecommendedItem recommendedItem : recommendations) { 
     System.out.print("User "); 
     System.out.print(userId); 
     System.out.print(": "); 
     System.out.println(recommendedItem); 
    } 
} 

Я хотел реализовать пагинации для этого, потому что рекомендация может генерировать тысячи результатов для пользователя, который whill стоить много в памяти. В любом случае, я могу указать максимальный результат и смещение для рекомендаций по генерации в mahout?

+0

Когда вы говорите 'рекомендовать (userId, 10)', вы говорите рекомендателю, чтобы попытаться сгенерировать 10 рекомендаций для пользователя. В зависимости от ваших тонкостей ваших данных вы можете получить меньше или меньше, но не более 10 –

ответ

2

Вы хотите, чтобы просмотреть страницу результатов поиска? Нет, нет способа сделать это. Вы можете запросить N, сохранить и обслужить результаты от них, а затем вернуться и попросить 2N, если потребуется, и т. Д. Но это не «смещение».

+0

- лучше ли использовать CSV-файл для хранения оценок и звуковых тегов? или лучше использовать базу данных при получении/создании рекомендаций? – KyelJmD

+1

Для Махута это не имеет значения. Вам все равно придется читать их в памяти, чтобы они быстро работали. будь то файл или БД, не имеет большого значения. –

+0

В любом случае я могу перезагрузить модель или модель файла db? так что я могу получать живые обновления (например, когда пользователю понравилось видео/песня/книги несколько секунд назад?) – KyelJmD

Смежные вопросы