Beispiel #1
0
        public async Task <IList <SearchableCategory> > GetCategories(SearchArgs searchArgs)
        {
            var fieldsToSearch = new Collection <TextSearchField <CategoryIndexItem> >
            {
                new() { Field = field => field.CategoryName }
            };

            var request = await ElasticSearchRequest <CategoryIndexItem> .Init(_elasticSearchService)
                          .CreateSearchRequestQuery(searchArgs, fieldsToSearch)
                          .CreateSort(searchArgs)
                          .PipeAsync(async searchRequest => await searchRequest.BuildAsync());

            var response = await _elasticSearchService.SearchAsync(request);

            var categories = response.SearchResults.Documents;

            var dtos = _mapper.Map <IList <SearchableCategory> >(categories);

            return(dtos);
        }
Beispiel #2
0
        public async Task <List <PostElasticIndexDto> > SuggestSearchAsync(string searchText, int skipItemCount = 0, int maxItemCount = 5)
        {
            try
            {
                var indexName = ElasticSearchItemsConst.PostIndexName;
                var queryy    = new Nest.SearchDescriptor <PostElasticIndexDto>() // SearchDescriptor burada oluşturacağız
                                .Suggest(su => su
                                         .Completion("post_suggestions",
                                                     c => c.Field(f => f.Suggest)
                                                     .Analyzer("simple")
                                                     .Prefix(searchText)
                                                     .Fuzzy(f => f.Fuzziness(Nest.Fuzziness.Auto))
                                                     .Size(10))
                                         );

                var returnData = await _elasticSearchService.SearchAsync <PostElasticIndexDto, int>(indexName, queryy, 0, 0);

                var data         = JsonConvert.SerializeObject(returnData);
                var suggestsList = returnData.Suggest.Count > 0 ? from suggest in returnData.Suggest["post_suggestions"]
                                   from option in suggest.Options
                                   select new PostElasticIndexDto
                {
                    Score        = option.Score,
                    CategoryName = option.Source.CategoryName,
                    Title        = option.Source.Title,
                    UserInfo     = option.Source.UserInfo,
                    Suggest      = option.Source.Suggest,
                    Url          = option.Source.Url,
                    Id           = option.Source.Id
                }
                                                                  : null;

                return(await Task.FromResult(suggestsList.ToList()));
            }
            catch (Exception ex)
            {
                return(await Task.FromException <List <PostElasticIndexDto> >(ex));
            }
        }