コード例 #1
0
        /// <summary>
        /// 执行方法。
        /// </summary>
        /// <param name="argument">参数。</param>
        public override async Task ExecuteAsync(Argument argument)
        {
            foreach (var provider in _providers)
            {
                await Task.Delay(1000);

                try
                {
                    //获取实体内容
                    var entityType = _searchManager.GetSearchEntity(provider.Model);
                    var entry      = await _searchManager.GetIndexAsync(entityType);

                    if (entry == null)
                    {
                        continue;
                    }
                    var search = new SearchDescriptor {
                        ProviderName = provider.ProviderName, TargetId = entry.Id
                    };
                    search.IndexedDate = DateTime.Now;
                    search.Summary     = provider.Summarized(entry);
                    if (search.Summary == null)
                    {
                        continue;
                    }
                    var indexes = provider.Indexed(entry);
                    await _searchManager.SaveAsync(entityType, search, indexes);
                }
                catch (Exception ex)
                {
                    _logger.LogWarning(3, $"索引实体生成[{provider.GetType().FullName}]出现错误:{ex.Message}", ex);
                }
            }
        }