public CachingUserNeighborhood(UserNeighborhood neighborhood, DataModel dataModel) throws TasteException { Preconditions.checkArgument(neighborhood != null, "neighborhood is null"); this.neighborhood = neighborhood; int maxCacheSize = dataModel.getNumUsers(); // just a dumb heuristic for sizing this.neighborhoodCache = new Cache<Long,long[]>(new NeighborhoodRetriever(neighborhood), maxCacheSize); }
public CachingUserNeighborhood(UserNeighborhood neighborhood, DataModel dataModel) throws TasteException { Preconditions.checkArgument(neighborhood != null, "neighborhood is null"); this.neighborhood = neighborhood; int maxCacheSize = dataModel.getNumUsers(); // just a dumb heuristic for sizing this.neighborhoodCache = new Cache<>(new NeighborhoodRetriever(neighborhood), maxCacheSize); }
public CachingUserNeighborhood(UserNeighborhood neighborhood, DataModel dataModel) throws TasteException { Preconditions.checkArgument(neighborhood != null, "neighborhood is null"); this.neighborhood = neighborhood; int maxCacheSize = dataModel.getNumUsers(); // just a dumb heuristic for sizing this.neighborhoodCache = new Cache<Long,long[]>(new NeighborhoodRetriever(neighborhood), maxCacheSize); }
public AveragingPreferenceInferrer(DataModel dataModel) throws TasteException { this.dataModel = dataModel; Retriever<Long,Float> retriever = new PrefRetriever(); averagePreferenceValue = new Cache<Long,Float>(retriever, dataModel.getNumUsers()); refresh(null); }
public AveragingPreferenceInferrer(DataModel dataModel) throws TasteException { this.dataModel = dataModel; Retriever<Long,Float> retriever = new PrefRetriever(); averagePreferenceValue = new Cache<Long,Float>(retriever, dataModel.getNumUsers()); refresh(null); }
public AveragingPreferenceInferrer(DataModel dataModel) throws TasteException { this.dataModel = dataModel; Retriever<Long,Float> retriever = new PrefRetriever(); averagePreferenceValue = new Cache<>(retriever, dataModel.getNumUsers()); refresh(null); }
public CachingRecommender(Recommender recommender) throws TasteException { Preconditions.checkArgument(recommender != null, "recommender is null"); this.recommender = recommender; maxHowMany = new int[]{1}; // Use "num users" as an upper limit on cache size. Rough guess. int numUsers = recommender.getDataModel().getNumUsers(); recommendationsRetriever = new RecommendationRetriever(); recommendationCache = new Cache<Long, Recommendations>(recommendationsRetriever, numUsers); estimatedPrefCache = new Cache<LongPair, Float>(new EstimatedPrefRetriever(), numUsers); refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() { clear(); return null; } }); refreshHelper.addDependency(recommender); }
/** * Creates this on top of the given {@link UserSimilarity}. * The cache size is capped by the given size. */ public CachingUserSimilarity(UserSimilarity similarity, int maxCacheSize) { Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; this.similarityCache = new Cache<LongPair,Double>(new SimilarityRetriever(similarity), maxCacheSize); this.refreshHelper = new RefreshHelper(new Callable<Void>() { @Override public Void call() { similarityCache.clear(); return null; } }); refreshHelper.addDependency(similarity); }
/** * Creates this on top of the given {@link ItemSimilarity}. * The cache size is capped by the given size. */ public CachingItemSimilarity(ItemSimilarity similarity, int maxCacheSize) { Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; this.similarityCache = new Cache<>(new SimilarityRetriever(similarity), maxCacheSize); this.refreshHelper = new RefreshHelper(new Callable<Void>() { @Override public Void call() { similarityCache.clear(); return null; } }); refreshHelper.addDependency(similarity); }
/** * Creates this on top of the given {@link UserSimilarity}. * The cache size is capped by the given size. */ public CachingUserSimilarity(UserSimilarity similarity, int maxCacheSize) { Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; this.similarityCache = new Cache<LongPair,Double>(new SimilarityRetriever(similarity), maxCacheSize); this.refreshHelper = new RefreshHelper(new Callable<Void>() { @Override public Void call() { similarityCache.clear(); return null; } }); refreshHelper.addDependency(similarity); }
public CachingRecommender(Recommender recommender) throws TasteException { Preconditions.checkArgument(recommender != null, "recommender is null"); this.recommender = recommender; maxHowMany = new int[]{1}; // Use "num users" as an upper limit on cache size. Rough guess. int numUsers = recommender.getDataModel().getNumUsers(); recommendationsRetriever = new RecommendationRetriever(); recommendationCache = new Cache<Long, Recommendations>(recommendationsRetriever, numUsers); estimatedPrefCache = new Cache<LongPair, Float>(new EstimatedPrefRetriever(), numUsers); refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() { clear(); return null; } }); refreshHelper.addDependency(recommender); }
public CachingRecommender(Recommender recommender) throws TasteException { Preconditions.checkArgument(recommender != null, "recommender is null"); this.recommender = recommender; maxHowMany = new int[]{1}; // Use "num users" as an upper limit on cache size. Rough guess. int numUsers = recommender.getDataModel().getNumUsers(); recommendationsRetriever = new RecommendationRetriever(); recommendationCache = new Cache<>(recommendationsRetriever, numUsers); estimatedPrefCache = new Cache<>(new EstimatedPrefRetriever(), numUsers); refreshHelper = new RefreshHelper(new Callable<Object>() { @Override public Object call() { clear(); return null; } }); refreshHelper.addDependency(recommender); }
/** * Creates this on top of the given {@link ItemSimilarity}. * The cache size is capped by the given size. */ public CachingItemSimilarity(ItemSimilarity similarity, int maxCacheSize) { Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; this.similarityCache = new Cache<LongPair,Double>(new SimilarityRetriever(similarity), maxCacheSize); this.refreshHelper = new RefreshHelper(new Callable<Void>() { @Override public Void call() { similarityCache.clear(); return null; } }); refreshHelper.addDependency(similarity); }
/** * Creates this on top of the given {@link ItemSimilarity}. * The cache size is capped by the given size. */ public CachingItemSimilarity(ItemSimilarity similarity, int maxCacheSize) { Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; this.similarityCache = new Cache<LongPair,Double>(new SimilarityRetriever(similarity), maxCacheSize); this.refreshHelper = new RefreshHelper(new Callable<Void>() { @Override public Void call() { similarityCache.clear(); return null; } }); refreshHelper.addDependency(similarity); }
/** * Creates this on top of the given {@link UserSimilarity}. * The cache size is capped by the given size. */ public CachingUserSimilarity(UserSimilarity similarity, int maxCacheSize) { Preconditions.checkArgument(similarity != null, "similarity is null"); this.similarity = similarity; this.similarityCache = new Cache<>(new SimilarityRetriever(similarity), maxCacheSize); this.refreshHelper = new RefreshHelper(new Callable<Void>() { @Override public Void call() { similarityCache.clear(); return null; } }); refreshHelper.addDependency(similarity); }
@Test public void testLotsOfGets() throws TasteException { Retriever<Object,Object> retriever = new IdentityRetriever(); Cache<Object,Object> cache = new Cache<Object,Object>(retriever, 1000); for (int i = 0; i < 1000000; i++) { assertEquals(i, cache.get(i)); } }
@Test public void testMixedUsage() throws TasteException { Random random = RandomUtils.getRandom(); Retriever<Object,Object> retriever = new IdentityRetriever(); Cache<Object,Object> cache = new Cache<Object,Object>(retriever, 1000); for (int i = 0; i < 1000000; i++) { double r = random.nextDouble(); if (r < 0.01) { cache.clear(); } else if (r < 0.1) { cache.remove(r - 100); } else { assertEquals(i, cache.get(i)); } } }