示例#1
0
        public async Task <IActionResult> QueryOrdering()
        {
            // 排序
            ICollection <SortOrder> sortOrders = new List <SortOrder>()
            {
                new SortOrder("id", Order.DESC)
            };
            // 使用查询条件并排序
            SolrQueryResults <PostDoc> docs = await solr.QueryAsync("post_title:索尼", sortOrders);

            return(Ok(new ResponseResult <SolrQueryResults <PostDoc> >(ResponseStatus.SUCCEED, string.Empty, docs)));
        }
        public IList <News> Handle(SearchNewsQuery query)
        {
            var news   = _solrOperations.QueryAsync(SolrQueryHelper.BuildQuery(new SearchParameters()));
            var result = news.Result;

            throw new NotImplementedException();
        }
        public async Task <List <BasicSongSearchResult> > Search(string input)
        {
            if (string.IsNullOrWhiteSpace(input))
            {
                return(null);
            }

            var terms = GetStringFuzzySearchTerms(input);

            AbstractSolrQuery query = null;

            foreach (var term in terms)
            {
                if (query == null)
                {
                    query = new SolrQueryByField(SolrSearchConstants.SongName, term)
                    {
                        Quoted = false
                    };
                }
                else
                {
                    query = query || new SolrQueryByField(SolrSearchConstants.SongName, term)
                    {
                        Quoted = false
                    };
                }

                query = query || new SolrQueryByField(SolrSearchConstants.ArtistName, term)
                {
                    Quoted = false
                };
            }

            var result = await _songSearchOperations.QueryAsync(query, new QueryOptions { Rows = 50 });

            var resultList = result.ToList();

            var basicSongSearchResults = _getSongsFromSearchResultsQuery.Get(resultList);

            return(basicSongSearchResults);
        }
示例#4
0
    public async Task <SearchResults <MultimediaCategory> > SearchAsync(string[] roles, string query, int start)
    {
        var opts = GetQueryOptions(roles, start);

        var solrResults = await _solr.QueryAsync(new SolrQuery(query), opts);

        return(new SearchResults <MultimediaCategory>()
        {
            Results = solrResults.ToArray(),
            StartIndex = solrResults.Start,
            TotalFound = solrResults.NumFound
        });
    }
示例#5
0
        public async Task <IEnumerable <PodcastDocument> > Search(string query)
        {
            var response = await _solrPodcasts.QueryAsync(SolrQuery.All, new QueryOptions
            {
                Rows  = 0,
                Facet = new FacetParameters
                {
                    Queries = new[] {
                        new SolrFacetFieldQuery("category"),
                        new SolrFacetFieldQuery("tags")
                    }
                }
            });

            foreach (var facet in response.FacetFields["category"])
            {
                Console.WriteLine("Category {0}: ({1} matches)", facet.Key, facet.Value);
            }
            foreach (var facet in response.FacetFields["tags"])
            {
                Console.WriteLine("Tag {0}: ({1} matches)", facet.Key, facet.Value);
            }
            return(response);
        }
示例#6
0
        public async Task <List <FeedItem> > Search(string keywords, int page)
        {
            AbstractSolrQuery q = null;

            foreach (var keyword in keywords.Split(' '))
            {
                if (string.IsNullOrWhiteSpace(keyword))
                {
                    continue;
                }

                var k = new SolrQuery($"title:{keyword}") || new SolrQuery($"summary:{keyword}");
                if (q == null)
                {
                    q = k;
                }
                else
                {
                    q = q && k;
                }
            }

            if (q == null)
            {
                return(new List <FeedItem>());
            }

            var res = await _solrFeedItems.QueryAsync(q, new QueryOptions
            {
                OrderBy       = new [] { new SortOrder("publish_time_in_utc", Order.DESC) },
                StartOrCursor = new StartOrCursor.Start(page * 50),
                Rows          = 50
            });

            return(res.Select(s => SolrFeedItemToFeedItem(s)).ToList());
        }
 public async Task <IEnumerable <CandidatoDocumento> > SearchAsync(AbstractSolrQuery query)
 {
     return(await _solr.QueryAsync(query));
 }
示例#8
0
 public async Task <IEnumerable <Document> > QueryAsync(string query, CancellationToken cancellationToken = default)
 {
     return(await _solr.QueryAsync(query, cancellationToken));
 }
        private async Task <SolrQueryResults <SolrNewsItem> > GetNews()
        {
            var news = await _solrOperations.QueryAsync(SolrQueryHelper.BuildQuery(new SearchParameters()));

            return(news);
        }
示例#10
0
        private async Task <string> InitProcessor(string indexName)
        {
            indexName = "gdst_" + indexName.ToLower();

            _documentCount = (await _solrOperation.QueryAsync(SolrQuery.All, new QueryOptions()
            {
                StartOrCursor = new StartOrCursor.Start(0),
                Rows = 1
            })).NumFound;

            _logger.LogInformation($"{indexName} NumFound :{_documentCount}");

            var response = await _elasticClient.Indices.ExistsAsync(index : indexName.ToLower());

            var solrSchema = await _solrOperation.GetSchemaAsync("schema.xml");

            var filedTypes = solrSchema.SolrFields.Select(f => f.Type.Name).Distinct();

            _logger.LogInformation($"total fields: {solrSchema.SolrFields.Count} Types: {string.Join(",", filedTypes)}");

            if (!response.Exists)
            {
                var indexSettings = new IndexSettings()
                {
                    NumberOfReplicas = 0
                };
                var properties = new Properties();

                solrSchema.SolrFields.ForEach(sf =>
                {
                    switch (sf.Type.Name)
                    {
                    case "int":
                        properties.Add(sf.Name, new NumberProperty(NumberType.Integer));
                        break;

                    case "double":
                        properties.Add(sf.Name, new NumberProperty(NumberType.Double));
                        break;

                    case "float":
                        properties.Add(sf.Name, new NumberProperty(NumberType.Float));
                        break;

                    case "string":
                        properties.Add(sf.Name, new KeywordProperty());
                        break;

                    case "date":
                        properties.Add(sf.Name, new DateProperty());
                        break;

                    case "location_rpt":
                        if (sf.Name == "GEO")
                        {
                            properties.Add(sf.Name, new GeoShapeProperty());
                        }
                        else
                        {
                            properties.Add(sf.Name, new GeoPointProperty());
                        }

                        break;

                    default:
                        properties.Add(sf.Name, new TextProperty());
                        break;
                    }
                });

                var typeMappings = new TypeMapping()
                {
                    Properties = properties
                };

                _elasticClient.Indices.Create(indexName, p =>
                                              p.InitializeUsing(new IndexState()
                {
                    Settings = indexSettings,
                    Mappings = typeMappings
                }));
            }

            return(indexName);
        }