Exemple #1
0
        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);
 }