@Nullable public PreferenceDomain getPreferenceDomain() { PreferenceDomain domain = null; for (EntitySource src: getSourcesForType(CommonTypes.RATING)) { Map<String,Object> meta = src.getMetadata(); if (meta.containsKey("domain")) { if (domain != null) { logger.warn("multiple rating sources have domains"); } Map<String,Object> dom = (Map<String, Object>) meta.get("domain"); PreferenceDomainBuilder pdb = new PreferenceDomainBuilder(); pdb.setMinimum(((Number) dom.get("minimum")).doubleValue()) .setMaximum(((Number) dom.get("maximum")).doubleValue()); Number prec = (Number) dom.get("precision"); if (prec != null) { pdb.setPrecision(prec.doubleValue()); } domain = pdb.build(); } } return domain; }
@Test public void testSetAll() { PreferenceDomainBuilder bld = new PreferenceDomainBuilder(); bld.setMinimum(1.0) .setMaximum(5) .setPrecision(0.5); PreferenceDomain dom = bld.build(); assertThat(dom.getMinimum(), equalTo(1.0)); assertThat(dom.getMaximum(), equalTo(5.0)); assertThat(dom.getPrecision(), equalTo(0.5)); }
config.bind(ItemScorer.class).to(SlopeOneItemScorer.class); config.bind(PreferenceDomain.class).to(new PreferenceDomainBuilder(1, 5) .setPrecision(1) .build()); try (Recommender rec = LenskitRecommender.build(config, dao)) {
config.bind(ItemScorer.class).to(WeightedSlopeOneItemScorer.class); config.bind(PreferenceDomain.class).to(new PreferenceDomainBuilder(1, 5) .setPrecision(1) .build()); try (Recommender rec = LenskitRecommender.build(config, dao)) {
config.bind(ItemScorer.class).to(WeightedSlopeOneItemScorer.class); config.bind(PreferenceDomain.class).to(new PreferenceDomainBuilder(1, 5) .setPrecision(1) .build()); try (Recommender rec = LenskitRecommender.build(config, dao)) {
config.bind(ItemScorer.class).to(SlopeOneItemScorer.class); config.bind(PreferenceDomain.class).to(new PreferenceDomainBuilder(1, 5) .setPrecision(1) .build()); try (Recommender rec = LenskitRecommender.build(config, dao)) {
@Nullable public PreferenceDomain getPreferenceDomain() { PreferenceDomain domain = null; for (EntitySource src: getSourcesForType(CommonTypes.RATING)) { Map<String,Object> meta = src.getMetadata(); if (meta.containsKey("domain")) { if (domain != null) { logger.warn("multiple rating sources have domains"); } Map<String,Object> dom = (Map<String, Object>) meta.get("domain"); PreferenceDomainBuilder pdb = new PreferenceDomainBuilder(); pdb.setMinimum(((Number) dom.get("minimum")).doubleValue()) .setMaximum(((Number) dom.get("maximum")).doubleValue()); Number prec = (Number) dom.get("precision"); if (prec != null) { pdb.setPrecision(prec.doubleValue()); } domain = pdb.build(); } } return domain; }