我正在尝试实现一个基于mahout的推荐系统。我不能在jsf页面上显示结果。
@ManagedBean(name="similarvaluerecommender") @视图范围
公共类SimilarValueRecommender实现可序列化{私有列表recommendedItems;
@PostConstruct
public void init() {
this.recommendedItems = new ArrayList<>();
DataModel dm;
try {
dm = new FileDataModel(new File("Dataset/userdata.csv"));
//ItemSimilarity sim = new LogLikelihoodSimilarity(dm);
TanimotoCoefficientSimilarity sim = new TanimotoCoefficientSimilarity(dm);
GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim);
int x=1;
for(LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();) {
long itemId = items.nextLong();
List<RecommendedItem>recommendedItems1 = recommender.mostSimilarItems(itemId, 10);
this.recommendedItems.addAll(recommendedItems1);
x++;
}
} catch (TasteException ex) {
Logger.getLogger(SimilarValueRecommender.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex) {
Logger.getLogger(SimilarValueRecommender.class.getName()).log(Level.SEVERE, null, ex);
}
}
//getter and setter...
public List<RecommendedItem> getRecommendedItems(){
return recommendedItems;
}
public void setList(List<RecommendedItem> recommendedItems) {
this.recommendedItems=recommendedItems;
}
}
我想在jsf页面上以表格的形式显示此页面的结果。这就是视图
<ui:composition template="WEB-INF/commonlayout.xhtml">
<ui:define name="content">
<h:form>
hi
<h:dataTable id="similarvaluestable" value="#{similarvaluerecommender.recommendedItems}" var="recommendedItem">
<h:column>
#{recommendedItem.itemID}
</h:column>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
发布于 2014-04-25 03:25:23
执行以下操作:
List<RecommendedItem> recommendations
属性。@PostConstruct
方法中,并将其存储到视图中的data from recommendations
recommendations
属性中。在代码中:
@ManagedBean("similarValueRecommender")
@ViewScoped
public class SimilarValueRecommender implements Serializable {
List<RecommendedItem> recommendations;
@PostConstruct
public void init() {
this.recommendations = new ArrayList<RecommendedItem>();
//taken from your current code
//seems like this is the code to load recommendations
DataModel dm = new AlphaItemFileDataModel(new File("Dataset/userdata.csv"));
//ItemSimilarity sim = new LogLikelihoodSimilarity(dm);
TanimotoCoefficientSimilarity sim = new TanimotoCoefficientSimilarity(dm);
GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim);
int x=1;
for(LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();) {
long itemId = items.nextLong();
List<RecommendedItem>recommendations = recommender.mostSimilarItems(itemId, 10);
/*
for(RecommendedItem recommendation : recommendations) {
similaritemID=recommendation.getItemID();
System.out.println(itemId + "," + recommendation.getItemID() + "," + recommendation.getValue());
}
*/
this.recommendations.addAll(recommendations);
x++;
//if(x>10) System.exit(1);
}
}
//getter and setter...
}
在您的视图中:
<h:dataTable value="#{similarValueRecommender.recommendations}" var="recommendation">
<h:column>
#{recommendation.text}
</h:column>
</h:dataTable>
https://stackoverflow.com/questions/23277045
复制相似问题