public async Task Update(IEnumerable <PodcastDocument> documents) { foreach (var document in documents) { await DoUpdate(document); } await _solrPodcasts.CommitAsync(); }
public virtual async Task DeleteAsync(TId id, CancellationToken cancellationToken) { if (Equals(id, default(TId))) { return; } await _solrOperations.DeleteAsync(id.ToString()); await _solrOperations.CommitAsync(); }
public async Task <ResponseResult> Add() { // 同步添加文档 solr.Add( new PostDoc() { Id = 30001, Name = "This SolrNet Name", Title = "This SolrNet Title", Excerpt = "This SolrNet Excerpt", Content = "This SolrNet Content 30001", PostDate = DateTime.Now } ); // 异步添加文档 await solr.AddAsync( new PostDoc() { Id = 30002, Name = "This SolrNet Name", Title = "This SolrNet Title", Excerpt = "This SolrNet Excerpt", Content = "This SolrNet Content 30002", PostDate = DateTime.Now } ); ResponseHeader responseHeader = await solr.CommitAsync(); ResponseResult response = new ResponseResult(); if (responseHeader.Status == 0) { response.Status = ResponseStatus.SUCCEED; } return(response); }
public async Task AddAsync(CandidatoDocumento documento) { await _solr.AddAsync(documento); await _solr.CommitAsync(); }
public void AddToSolr(T indexable) { _solrPeople.AddAsync(indexable); _solrPeople.CommitAsync(); }
public static async Task UpdateFeed(IDbContextFactory <FeedReaderDbContext> dbFactory, ISolrOperations <Solrs.FeedItem> solrFeedItems, ServerCore.Models.Feed feed, ILogger log, HttpClient httpClient = null) { log.LogInformation($"UpdateFeed: {feed.Uri}"); // Get original uri. var feedUriHash = feed.Id; var feedOriginalUri = feed.Uri; // Get feed content. if (httpClient == null) { var handler = new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.All, AllowAutoRedirect = true }; httpClient = new HttpClient(handler); httpClient.DefaultRequestHeaders.Add("User-Agent", "FeedReader"); httpClient.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue { NoCache = true }; } var feedContent = await httpClient.GetStringAsync(feedOriginalUri); // Create parser. var parser = FeedParser.FeedParser.Create(feedContent); // Parse feed info. var feedInfo = parser.ParseFeedInfo(); // Parse html content to get icon uri. if (string.IsNullOrWhiteSpace(feedInfo.IconUri)) { string uri = null; try { if (!string.IsNullOrWhiteSpace(feedInfo.WebsiteLink)) { uri = feedInfo.WebsiteLink; } else { uri = new Uri(feedOriginalUri).GetLeftPart(UriPartial.Authority); } var response = await httpClient.GetAsync(uri); feedInfo.IconUri = new HtmlParser(await response.Content.ReadAsStringAsync(), response.RequestMessage.RequestUri.ToString()).ShortcurtIcon; } catch (HttpRequestException ex) { log.LogError($"Try download the content of {uri} failed. Ex: {ex.Message}"); } catch (Exception ex) { log.LogError($"Parse html content of {uri} failed. Ex: {ex.Message}"); } } // Try to get the favicon.ico file directly, like https://www.cagle.com, we can't get any icon info from the index page, but it has favicon.ico file. if (string.IsNullOrWhiteSpace(feedInfo.IconUri)) { string uri = null; try { var uriBuilder = new UriBuilder(string.IsNullOrWhiteSpace(feedInfo.WebsiteLink) ? feedOriginalUri : feedInfo.WebsiteLink); uriBuilder.Path = "/favicon.ico"; uri = uriBuilder.Uri.ToString(); var response = await httpClient.GetAsync(uriBuilder.Uri); if (response.IsSuccessStatusCode) { feedInfo.IconUri = uri; } } catch (HttpRequestException ex) { log.LogError($"Try download the content of {uri} failed. Ex: {ex.Message}"); } } // Save feed info to table. feed.Description = feedInfo.Description; feed.IconUri = feedInfo.IconUri; feed.LastUpdateTimeInUtc = DateTime.UtcNow; feed.Name = feedInfo.Name; feed.WebSiteUri = feedInfo.WebsiteLink; // Parse feed items. var feedItems = parser.ParseFeedItems(); // Save feed items to db. var db = dbFactory.CreateDbContext(); foreach (var item in feedItems) { var feedItemId = item.PermentLink.Sha256(); if (await db.FeedItems.FindAsync(feedItemId) == null) { var feedItem = new ServerCore.Models.FeedItem { Content = item.Content, FeedId = feed.Id, Id = feedItemId, PublishTimeInUtc = item.PubDate.ToUniversalTime(), Summary = item.Summary, Title = item.Title, TopicPictureUri = item.TopicPictureUri, Uri = item.PermentLink }; db.FeedItems.Add(feedItem); solrFeedItems.Add(new Solrs.FeedItem(feedItem, feed)); } } await db.SaveChangesAsync(); // Save to solrs try { await solrFeedItems.CommitAsync(); } catch (Exception ex) { log.LogError($"Save to solrs failed. ex: {ex.Message}"); } log.LogInformation($"UpdateFeed: {feed.Uri} finished"); }