public List <SearchResult> Search(HashedSearchQuery search) { var minHasher = new MinHasher <Guid>(_db.LSHConfig.LSHHashSeed); var lshSearcher = new LSHSearch <Guid>(minHasher, SimilarityMeasures.Jaccard); var searchSpace = _db.HashedProducts .ToDictionary(p => p.Id, p => (IWeightedHashed)p); var res = lshSearcher.GetClosest(searchSpace, search.SearchTerm, search.MaxResults, search.MinimumSimilarity); var results = res.Select(r => new SearchResult { Product = new ProductBase() { Id = r.Id }, Similarity = r.Similarity, Store = _db.HashedProducts .Include(p => p.Store) .FirstOrDefault(p => p.Id == r.Id).Store } ).ToList(); return(results); }
public void Setup() { minHasher = new MinHasher <int>(hashSeeds.Take(50).ToArray()); lshSearcher = new LSHSearch <int>(minHasher, SimilarityMeasures.Jaccard); }