Commit 51a59d4b by 陶然

优化

parent c98e4caf
...@@ -10,7 +10,7 @@ namespace Njust.Pdf.Analysis.Entities ...@@ -10,7 +10,7 @@ namespace Njust.Pdf.Analysis.Entities
{ {
[Alias(Configs.TableDisCoOrgan)] [Alias(Configs.TableDisCoOrgan)]
[Api(Description = "机构合作分布")] [Api(Description = "机构合作分布")]
public class DisCoOrgran : EntityWithMetadata public class DisCoOrgan : EntityWithMetadata
{ {
[ApiMember(Description = "所属领域")] [ApiMember(Description = "所属领域")]
public string DomainName { get; set; } public string DomainName { get; set; }
......
...@@ -24,6 +24,9 @@ namespace Njust.Pdf.Analysis.Entities ...@@ -24,6 +24,9 @@ namespace Njust.Pdf.Analysis.Entities
[ApiMember(Description = "国家")] [ApiMember(Description = "国家")]
public string Country { get; set; } public string Country { get; set; }
[ApiMember(Description = "英文表示")]
public string EnCountry { get; set; }
[ApiMember(Description = "国家发表文献数量")] [ApiMember(Description = "国家发表文献数量")]
public int Count { get; set; } public int Count { get; set; }
} }
......
...@@ -28,7 +28,7 @@ namespace Njust.Pdf.Analysis.Entities ...@@ -28,7 +28,7 @@ namespace Njust.Pdf.Analysis.Entities
public string TopicWord { get; set; } public string TopicWord { get; set; }
[ApiMember(Description = "主题词概率TOP10")] [ApiMember(Description = "主题词概率TOP10")]
public string TopicWordProbability { get; set; } public List<double> TopicWordProbability { get; set; }
[ApiMember(Description = "主题支持文档列表")] [ApiMember(Description = "主题支持文档列表")]
[StringLength(5000)] [StringLength(5000)]
......
...@@ -8,8 +8,8 @@ using Kivii.DataAnnotations; ...@@ -8,8 +8,8 @@ using Kivii.DataAnnotations;
namespace Njust.Pdf.Analysis.Entities namespace Njust.Pdf.Analysis.Entities
{ {
[Alias(Configs.TableDisTimeTopic)] [Alias(Configs.TableDisTopicEvolution)]
[Api(Description = "TableDisTopicEvolution")] [Api(Description = "主题演化分布")]
public class DisTopicEvolution : EntityWithMetadata public class DisTopicEvolution : EntityWithMetadata
{ {
[ApiMember(Description = "所属领域")] [ApiMember(Description = "所属领域")]
......
...@@ -42,9 +42,6 @@ namespace Njust.Pdf.Analysis.Jobs ...@@ -42,9 +42,6 @@ namespace Njust.Pdf.Analysis.Jobs
} }
private bool textPdfBox() private bool textPdfBox()
{ {
//var text1 = "\x9f\x0f\x12";
Regex regex = new Regex(@"/\\x[\da-zA-Z]+/g");
//text1 = regex.Replace(text1, "");
int succeed = 0, total = 0; int succeed = 0, total = 0;
var conn = KiviiContext.GetOpenedDbConnection<AnalyseAll>(); var conn = KiviiContext.GetOpenedDbConnection<AnalyseAll>();
try try
...@@ -73,8 +70,10 @@ namespace Njust.Pdf.Analysis.Jobs ...@@ -73,8 +70,10 @@ namespace Njust.Pdf.Analysis.Jobs
if (pdfFile == null) throw new Exception($"未找Pdf文件:{item.Title},HashCode:{item.HashCode}"); if (pdfFile == null) throw new Exception($"未找Pdf文件:{item.Title},HashCode:{item.HashCode}");
var physicalStorageFilePath = pdfFile.GetPhysicalPath(); var physicalStorageFilePath = pdfFile.GetPhysicalPath();
if (!File.Exists(physicalStorageFilePath)) throw new Exception($"未找Pdf文件:{item.Title},HashCode:{item.HashCode}"); if (!File.Exists(physicalStorageFilePath)) throw new Exception($"未找Pdf文件:{item.Title},HashCode:{item.HashCode}");
Console.WriteLine("-------------------------Pre-------------------------");
Console.WriteLine($"-------------------------{physicalStorageFilePath}-------------------------");
var text = Kivii.PdfBox.Instance.ReadText(physicalStorageFilePath); var text = Kivii.PdfBox.Instance.ReadText(physicalStorageFilePath);
text = regex.Replace(text, ""); Console.WriteLine("-------------------------Ok-------------------------");
item.Allbody = text; item.Allbody = text;
item.AddOnlyProperties(o => o.Allbody); item.AddOnlyProperties(o => o.Allbody);
item.AnlysisTime = DateTime.Now; item.AnlysisTime = DateTime.Now;
...@@ -83,15 +82,19 @@ namespace Njust.Pdf.Analysis.Jobs ...@@ -83,15 +82,19 @@ namespace Njust.Pdf.Analysis.Jobs
item.AddOnlyProperties(o => o.AnlysisUserName); item.AddOnlyProperties(o => o.AnlysisUserName);
item.IsAnlysis = true; item.IsAnlysis = true;
item.AddOnlyProperties(o => o.IsAnlysis); item.AddOnlyProperties(o => o.IsAnlysis);
Console.WriteLine("-------------------------PreUpdateOnly-------------------------");
conn.UpdateOnly(item); conn.UpdateOnly(item);
Console.WriteLine("-------------------------UpdateOnly-------------------------");
succeed++; succeed++;
} }
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine("-------------------------Ex-------------------------");
TaskContext.Message = $"处理消息异常:共处理{succeed}/{total},Kvid:{item.Kvid},Ex:{ex.Message}"; TaskContext.Message = $"处理消息异常:共处理{succeed}/{total},Kvid:{item.Kvid},Ex:{ex.Message}";
item.Status += 1; item.Status += 1;
item.AddOnlyProperties(o => o.Status); item.AddOnlyProperties(o => o.Status);
conn.UpdateOnly(item); conn.UpdateOnly(item);
Console.WriteLine("-------------------------ExUpdate-------------------------");
return false; return false;
} }
......
...@@ -84,5 +84,8 @@ ...@@ -84,5 +84,8 @@
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\countrytranslation.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
</Project>
\ No newline at end of file
Singapore Rep.:新加坡
Dominican Rep.:多米尼加
Palestine:巴勒斯坦
Bahamas:巴哈马
Timor-Leste:东帝汶
Afghanistan:阿富汗
Guinea-Bissau:几内亚比绍
Côte dIvoire:科特迪瓦
Siachen Glacier:锡亚琴冰川
Br. Indian Ocean Ter.:英属印度洋领土
Angola:安哥拉
Albania:阿尔巴尼亚
United Arab Emirates:阿联酋
Argentina:阿根廷
Armenia:亚美尼亚
French Southern and Antarctic Lands:法属南半球和南极领地
Australia:澳大利亚
Austria:奥地利
Azerbaijan:阿塞拜疆
Burundi:布隆迪
Belgium:比利时
Benin:贝宁
Burkina Faso:布基纳法索
Bangladesh:孟加拉国
Bulgaria:保加利亚
The Bahamas:巴哈马
Bosnia and Herz.:波斯尼亚和黑塞哥维那
Belarus:白俄罗斯
Belize:伯利兹
Bermuda:百慕大
Bolivia:玻利维亚
Brazil:巴西
Brunei:文莱
Bhutan:不丹
Botswana:博茨瓦纳
Central African Rep.:中非
Canada:加拿大
Switzerland:瑞士
Chile:智利
China:中国
Ivory Coast:象牙海岸
Cameroon:喀麦隆
Dem. Rep. Congo:刚果民主共和国
Congo:刚果
Colombia:哥伦比亚
Costa Rica:哥斯达黎加
Cuba:古巴
N. Cyprus:北塞浦路斯
Cyprus:塞浦路斯
Czech Rep.:捷克
Germany:德国
Djibouti:吉布提
Denmark:丹麦
Algeria:阿尔及利亚
Ecuador:厄瓜多尔
Egypt:埃及
Eritrea:厄立特里亚
Spain:西班牙
Estonia:爱沙尼亚
Ethiopia:埃塞俄比亚
Finland:芬兰
Fiji:斐
Falkland Islands:福克兰群岛
France:法国
Gabon:加蓬
United Kingdom:英国
Georgia:格鲁吉亚
Ghana:加纳
Guinea:几内亚
Gambia:冈比亚
Guinea Bissau:几内亚比绍
Eq. Guinea:赤道几内亚
Greece:希腊
Greenland:格陵兰
Guatemala:危地马拉
French Guiana:法属圭亚那
Guyana:圭亚那
Honduras:洪都拉斯
Croatia:克罗地亚
Haiti:海地
Hungary:匈牙利
Indonesia:印度尼西亚
India:印度
Ireland:爱尔兰
Iran:伊朗
Iraq:伊拉克
Iceland:冰岛
Israel:以色列
Italy:意大利
Jamaica:牙买加
Jordan:约旦
Japan:日本
Japan:日本本土
Kazakhstan:哈萨克斯坦
Kenya:肯尼亚
Kyrgyzstan:吉尔吉斯斯坦
Cambodia:柬埔寨
Korea:韩国
Kosovo:科索沃
Kuwait:科威特
Lao PDR:老挝
Lebanon:黎巴嫩
Liberia:利比里亚
Libya:利比亚
Sri Lanka:斯里兰卡
Lesotho:莱索托
Lithuania:立陶宛
Luxembourg:卢森堡
Latvia:拉脱维亚
Morocco:摩洛哥
Moldova:摩尔多瓦
Madagascar:马达加斯加
Mexico:墨西哥
Macedonia:马其顿
Mali:马里
Myanmar:缅甸
Montenegro:黑山
Mongolia:蒙古
Mozambique:莫桑比克
Mauritania:毛里塔尼亚
Malawi:马拉维
Malaysia:马来西亚
Namibia:纳米比亚
New Caledonia:新喀里多尼亚
Niger:尼日尔
Nigeria:尼日利亚
Nicaragua:尼加拉瓜
Netherlands:荷兰
Norway:挪威
Nepal:尼泊尔
New Zealand:新西兰
Oman:阿曼
Pakistan:巴基斯坦
Panama:巴拿马
Peru:秘鲁
Philippines:菲律宾
Papua New Guinea:巴布亚新几内亚
Poland:波兰
Puerto Rico:波多黎各
Dem. Rep. Korea:朝鲜
Portugal:葡萄牙
Paraguay:巴拉圭
Qatar:卡塔尔
Romania:罗马尼亚
Russia:俄罗斯
Rwanda:卢旺达
W. Sahara:西撒哈拉
Saudi Arabia:沙特阿拉伯
Sudan:苏丹
S. Sudan:南苏丹
Senegal:塞内加尔
Solomon Is.:所罗门群岛
Sierra Leone:塞拉利昂
El Salvador:萨尔瓦多
Somaliland:索马里兰
Somalia:索马里
Serbia:塞尔维亚
Suriname:苏里南
Slovakia:斯洛伐克
Slovenia:斯洛文尼亚
Sweden:瑞典
Swaziland:斯威士兰
Syria:叙利亚
Chad:乍得
Togo:多哥
Thailand:泰国
Tajikistan:塔吉克斯坦
Turkmenistan:土库曼斯坦
East Timor:东帝汶
Trinidad and Tobago:特里尼达和多巴哥
Tunisia:突尼斯
Turkey:土耳其
Tanzania:坦桑尼亚
Uganda:乌干达
Ukraine:乌克兰
Uruguay:乌拉圭
United States:美国
Uzbekistan:乌兹别克斯坦
Venezuela:委内瑞拉
Vietnam:越南
Vanuatu:瓦努阿图
West Bank:西岸
Yemen:也门
South Africa:南非
Zambia:赞比亚
Zimbabwe:津巴布韦
\ No newline at end of file
...@@ -192,6 +192,8 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -192,6 +192,8 @@ namespace Njust.Pdf.Analysis.Tranforms
var allAuthors = conn.Select<Author>(o => Sql.In(o.AnalyseKvid, Items.ConvertAll(p => p.Kvid))); var allAuthors = conn.Select<Author>(o => Sql.In(o.AnalyseKvid, Items.ConvertAll(p => p.Kvid)));
var allKeywords = conn.Select<Keyword>(o => Sql.In(o.AnalyseKvid, Items.ConvertAll(p => p.Kvid))); var allKeywords = conn.Select<Keyword>(o => Sql.In(o.AnalyseKvid, Items.ConvertAll(p => p.Kvid)));
var allOrgans = conn.Select<Organ>(o => Sql.In(o.AnalyseKvid, Items.ConvertAll(p => p.Kvid))); var allOrgans = conn.Select<Organ>(o => Sql.In(o.AnalyseKvid, Items.ConvertAll(p => p.Kvid)));
var allItems = conn.Select<Analyse>(o => Sql.In(o.Kvid, Items.ConvertAll(p => p.Kvid)));
allItems.ThrowIfNullOrEmpty("未找到要复核的项!");
var trans = conn.OpenTransaction(); var trans = conn.OpenTransaction();
...@@ -201,6 +203,8 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -201,6 +203,8 @@ namespace Njust.Pdf.Analysis.Tranforms
{ {
if (item == null) continue; if (item == null) continue;
if (item.Kvid == Guid.Empty) continue; if (item.Kvid == Guid.Empty) continue;
var exist = allItems.FirstOrDefault(o => o.Kvid == item.Kvid);
if (exist == null) continue;
item.RemoveAllOnlyProperties(); item.RemoveAllOnlyProperties();
#region Author #region Author
var currentAuthors = allAuthors.Where(o => o.AnalyseKvid == item.Kvid).ToList(); var currentAuthors = allAuthors.Where(o => o.AnalyseKvid == item.Kvid).ToList();
...@@ -212,9 +216,9 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -212,9 +216,9 @@ namespace Njust.Pdf.Analysis.Tranforms
if (currentAuthors.Exists(o => o.Name == auth)) continue; if (currentAuthors.Exists(o => o.Name == auth)) continue;
var author = new Author(); var author = new Author();
author.Name = auth; author.Name = auth;
author.DomainName = item.DomainName; author.DomainName = exist.DomainName;
author.Language = item.Language; author.Language = exist.Language;
author.AnalyseKvid = item.Kvid; author.AnalyseKvid = exist.Kvid;
conn.Insert(author); conn.Insert(author);
} }
item.Author = string.Join(";", authors); item.Author = string.Join(";", authors);
...@@ -233,9 +237,9 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -233,9 +237,9 @@ namespace Njust.Pdf.Analysis.Tranforms
if (currentKeywords.Exists(o => o.Title == key)) continue; if (currentKeywords.Exists(o => o.Title == key)) continue;
var keyword = new Keyword(); var keyword = new Keyword();
keyword.Title = key; keyword.Title = key;
keyword.DomainName = item.DomainName; keyword.DomainName = exist.DomainName;
keyword.Language = item.Language; keyword.Language = exist.Language;
keyword.AnalyseKvid = item.Kvid; keyword.AnalyseKvid = exist.Kvid;
conn.Insert(keyword); conn.Insert(keyword);
} }
item.Keywords = string.Join(";", keywords); item.Keywords = string.Join(";", keywords);
...@@ -253,9 +257,9 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -253,9 +257,9 @@ namespace Njust.Pdf.Analysis.Tranforms
if (currentOrgans.Exists(o => o.Title == key)) continue; if (currentOrgans.Exists(o => o.Title == key)) continue;
var organ = new Organ(); var organ = new Organ();
organ.Title = key; organ.Title = key;
organ.DomainName = item.DomainName; organ.DomainName = exist.DomainName;
organ.Language = item.Language; organ.Language = exist.Language;
organ.AnalyseKvid = item.Kvid; organ.AnalyseKvid = exist.Kvid;
conn.Insert(organ); conn.Insert(organ);
} }
item.Organization = string.Join(";", organs); item.Organization = string.Join(";", organs);
......
using Kivii; using Kivii;
using Kivii.Linq; using Kivii.Linq;
using Kivii.Web; using Kivii.Web;
//using LDA.LdaModel;
using Njust.Pdf.Analysis.Entities; using Njust.Pdf.Analysis.Entities;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Njust.Pdf.Analysis.Tranforms namespace Njust.Pdf.Analysis.Tranforms
{ {
public class DisAuthorAnalysing:RestfulExecution<DisAuthor> [Api(Description = "作者分布")]
public class DisAuthorAnalysing : RestfulExecution<DisAuthor>
{ {
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
...@@ -20,6 +25,7 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -20,6 +25,7 @@ namespace Njust.Pdf.Analysis.Tranforms
var conn = KiviiContext.GetOpenedDbConnection<Author>(); var conn = KiviiContext.GetOpenedDbConnection<Author>();
var query = conn.From<Author>(); var query = conn.From<Author>();
query.OrderBy(o => o.Name);
var allAuthors = conn.Select(query); var allAuthors = conn.Select(query);
var group = allAuthors.GroupBy(o => new { o.Name, o.DomainName, o.Language }); var group = allAuthors.GroupBy(o => new { o.Name, o.DomainName, o.Language });
...@@ -51,11 +57,13 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -51,11 +57,13 @@ namespace Njust.Pdf.Analysis.Tranforms
//conn.UpdateOnly(exist); //conn.UpdateOnly(exist);
//rtns.Results.Add(exist); //rtns.Results.Add(exist);
} }
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
} }
} }
[Api(Description = "作者合作分布")]
public class DisCoauthorAnalysing : RestfulExecution<DisCoauthor> public class DisCoauthorAnalysing : RestfulExecution<DisCoauthor>
{ {
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
...@@ -76,14 +84,14 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -76,14 +84,14 @@ namespace Njust.Pdf.Analysis.Tranforms
var disCoauthors = new List<DisCoauthor>(); var disCoauthors = new List<DisCoauthor>();
foreach(var kv in group) foreach (var kv in group)
{ {
if (kv.Count() < 2) continue; if (kv.Count() < 2) continue;
var items = kv.ToList(); var items = kv.ToList();
items = items.OrderBy(o => o.Name).ToList(); items = items.OrderBy(o => o.Name).ToList();
for(var i = 0; i < items.Count() - 1; i++) for (var i = 0; i < items.Count() - 1; i++)
{ {
for(var j = 1; j < items.Count() - i; j++) for (var j = 1; j < items.Count() - i; j++)
{ {
var disCoauthor = new DisCoauthor(); var disCoauthor = new DisCoauthor();
disCoauthor.DomainName = items[i].DomainName; disCoauthor.DomainName = items[i].DomainName;
...@@ -93,10 +101,11 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -93,10 +101,11 @@ namespace Njust.Pdf.Analysis.Tranforms
disCoauthors.Add(disCoauthor); disCoauthors.Add(disCoauthor);
} }
} }
} }
var groupDisCoauthor = disCoauthors.GroupBy(o => new { o.DomainName, o.Language, o.Author1, o.Author2 }); var groupDisCoauthor = disCoauthors.GroupBy(o => new { o.DomainName, o.Language, o.Author1, o.Author2 });
foreach(var kv in groupDisCoauthor) foreach (var kv in groupDisCoauthor)
{ {
var disCoauthor = new DisCoauthor(); var disCoauthor = new DisCoauthor();
disCoauthor.DomainName = kv.Key.DomainName; disCoauthor.DomainName = kv.Key.DomainName;
...@@ -108,9 +117,460 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -108,9 +117,460 @@ namespace Njust.Pdf.Analysis.Tranforms
disCoauthor.RemoveAllOnlyProperties(); disCoauthor.RemoveAllOnlyProperties();
rtns.Results.Add(disCoauthor); rtns.Results.Add(disCoauthor);
} }
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count();
return rtns;
}
}
[Api(Description = "年份分布")]
public class DisTrendAnalysing : RestfulExecution<DisTrend>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisTrend>();
rtns.Results = new List<DisTrend>();
var conn = KiviiContext.GetOpenedDbConnection<Analyse>();
var query = conn.From<Analyse>();
query.OrderBy(o => o.PublishTime);
query.Where(o => o.IsChecked == true);
var allTrends = conn.Select(query);
var group = allTrends.GroupBy(o => new { o.PublishTime, o.DomainName, o.Language });
conn.InitEntityType<DisTrend>();
conn.Delete<DisTrend>(o => o.Kvid == o.Kvid);
foreach (var kv in group)
{
var disTrend = new DisTrend();
disTrend.Language = kv.Key.Language;
disTrend.DomainName = kv.Key.DomainName;
disTrend.Year = kv.Key.PublishTime;
disTrend.Count = kv.Count();
conn.Insert(disTrend);
disTrend.RemoveAllOnlyProperties();
rtns.Results.Add(disTrend);
}
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count();
return rtns;
}
}
[Api(Description = "机构分布")]
public class DisOrganAnalysing : RestfulExecution<DisOrgan>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisOrgan>();
rtns.Results = new List<DisOrgan>();
var conn = KiviiContext.GetOpenedDbConnection<Organ>();
var query = conn.From<Organ>();
query.OrderBy(o => o.Title);
var allOrgans = conn.Select(query);
var group = allOrgans.GroupBy(o => new { o.Title, o.DomainName, o.Language });
conn.InitEntityType<DisOrgan>();
conn.Delete<DisOrgan>(o => o.Kvid == o.Kvid);
foreach (var kv in group)
{
var disOrgan = new DisOrgan();
disOrgan.Language = kv.Key.Language;
disOrgan.DomainName = kv.Key.DomainName;
disOrgan.Organ = kv.Key.Title;
disOrgan.Count = kv.Count();
conn.Insert(disOrgan);
disOrgan.RemoveAllOnlyProperties();
rtns.Results.Add(disOrgan);
}
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count();
return rtns;
}
}
[Api(Description = "机构合作分布")]
public class DisCoOrganAnalysing : RestfulExecution<DisCoOrgan>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisCoOrgan>();
rtns.Results = new List<DisCoOrgan>();
var conn = KiviiContext.GetOpenedDbConnection<Organ>();
var query = conn.From<Organ>();
query.OrderBy(o => o.Title);
var allCoOrgans = conn.Select(query);
conn.InitEntityType<DisCoOrgan>();
conn.Delete<DisCoOrgan>(o => o.Kvid == o.Kvid);
var group = allCoOrgans.GroupBy(o => o.AnalyseKvid);
var disCoOrgrans = new List<DisCoOrgan>();
foreach (var kv in group)
{
if (kv.Count() < 2) continue;
var items = kv.ToList();
items = items.OrderBy(o => o.Title).ToList();
for (var i = 0; i < items.Count() - 1; i++)
{
for (var j = 1; j < items.Count() - i; j++)
{
var disCoOrgran = new DisCoOrgan();
disCoOrgran.DomainName = items[i].DomainName;
disCoOrgran.Language = items[i].Language;
disCoOrgran.Organ1 = items[i].Title;
disCoOrgran.Organ2 = items[i + j].Title;
disCoOrgrans.Add(disCoOrgran);
}
}
}
var groupDisCoOrgran = disCoOrgrans.GroupBy(o => new { o.DomainName, o.Language, o.Organ1, o.Organ2 });
foreach (var kv in groupDisCoOrgran)
{
var disCoOrgran = new DisCoOrgan();
disCoOrgran.DomainName = kv.Key.DomainName;
disCoOrgran.Language = kv.Key.Language;
disCoOrgran.Organ1 = kv.Key.Organ1;
disCoOrgran.Organ2 = kv.Key.Organ2;
disCoOrgran.Count = kv.Count();
conn.Insert(disCoOrgran);
disCoOrgran.RemoveAllOnlyProperties();
rtns.Results.Add(disCoOrgran);
}
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count();
return rtns;
}
}
[Api(Description = "国家分布")]
public class DisCountryAnalysing : RestfulExecution<DisCountry>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisCountry>();
rtns.Results = new List<DisCountry>();
var conn = KiviiContext.GetOpenedDbConnection<Analyse>();
var query = conn.From<Analyse>();
query.OrderBy(o => o.Country);
query.Where(o => o.IsChecked == true);
var allCountrys = conn.Select(query);
var group = allCountrys.GroupBy(o => new { o.Country, o.DomainName, o.Language });
conn.InitEntityType<DisCountry>();
conn.Delete<DisCountry>(o => o.Kvid == o.Kvid);
string line = "";
//List<string> EnCountry = new List<string>();
//List<string> CnCountry = new List<string>();
var country = new Dictionary<string, string>();
using (StreamReader sr = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Njust.Pdf.Analysis.Resources.countrytranslation.txt")))
{
while ((line = sr.ReadLine()) != null)
{
var sArray = line.Split(':').ToList();
country[sArray[1].ToLower()] = sArray[0];
//EnCountry.Add(sArray[0]);
//CnCountry.Add(sArray[1]);
}
}
foreach (var kv in group)
{
var disCountry = new DisCountry();
disCountry.Language = kv.Key.Language;
disCountry.DomainName = kv.Key.DomainName;
disCountry.Country = kv.Key.Country;
try
{
disCountry.EnCountry = disCountry.Country.IsNullOrEmpty() ? "" : country[disCountry.Country];
}
catch
{
disCountry.EnCountry = disCountry.Country;
}
//disCountry.EnCountry = EnCountry[CnCountry.IndexOf(disCountry.Country)];
disCountry.Count = kv.Count();
conn.Insert(disCountry);
disCountry.RemoveAllOnlyProperties();
rtns.Results.Add(disCountry);
}
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count();
return rtns;
}
}
[Api(Description = "来源分布")]
public class DisSourceAnalysing : RestfulExecution<DisSource>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisSource>();
rtns.Results = new List<DisSource>();
var conn = KiviiContext.GetOpenedDbConnection<Analyse>();
var query = conn.From<Analyse>();
query.OrderBy(o => o.Source);
query.Where(o => o.IsChecked == true);
var allSources = conn.Select(query);
var group = allSources.GroupBy(o => new { o.Source, o.DomainName, o.Language });
conn.InitEntityType<DisSource>();
conn.Delete<DisSource>(o => o.Kvid == o.Kvid);
foreach (var kv in group)
{
var disSource = new DisSource();
disSource.Language = kv.Key.Language;
disSource.DomainName = kv.Key.DomainName;
disSource.Source = kv.Key.Source;
disSource.Count = kv.Count();
conn.Insert(disSource);
disSource.RemoveAllOnlyProperties();
rtns.Results.Add(disSource);
}
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count();
return rtns;
}
}
[Api(Description = "关键词共现")]
public class DisCoKeywordAnalysing : RestfulExecution<DisCoKeyword>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisCoKeyword>();
rtns.Results = new List<DisCoKeyword>();
var conn = KiviiContext.GetOpenedDbConnection<Keyword>();
var query = conn.From<Keyword>();
query.OrderBy(o => o.Title);
var allCoKeywords = conn.Select(query);
conn.InitEntityType<DisCoKeyword>();
conn.Delete<DisCoKeyword>(o => o.Kvid == o.Kvid);
var group = allCoKeywords.GroupBy(o => o.AnalyseKvid);
var disCoKeywords = new List<DisCoKeyword>();
foreach (var kv in group)
{
if (kv.Count() < 2) continue;
var items = kv.ToList();
items = items.OrderBy(o => o.Title).ToList();
for (var i = 0; i < items.Count() - 1; i++)
{
for (var j = 1; j < items.Count() - i; j++)
{
var disCoKeyword = new DisCoKeyword();
disCoKeyword.DomainName = items[i].DomainName;
disCoKeyword.Language = items[i].Language;
disCoKeyword.KeyWord1 = items[i].Title;
disCoKeyword.KeyWord2 = items[i + j].Title;
disCoKeywords.Add(disCoKeyword);
}
}
}
var groupDisCoKeyword = disCoKeywords.GroupBy(o => new { o.DomainName, o.Language, o.KeyWord1, o.KeyWord2 });
foreach (var kv in groupDisCoKeyword)
{
var disCoKeyword = new DisCoKeyword();
disCoKeyword.DomainName = kv.Key.DomainName;
disCoKeyword.Language = kv.Key.Language;
disCoKeyword.KeyWord1 = kv.Key.KeyWord1;
disCoKeyword.KeyWord2 = kv.Key.KeyWord2;
disCoKeyword.Count = kv.Count();
conn.Insert(disCoKeyword);
disCoKeyword.RemoveAllOnlyProperties();
rtns.Results.Add(disCoKeyword);
}
rtns.Results.OrderBy(o => o.Count).Take(20);
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
} }
} }
[Api(Description = "时序主题分布")]
public class DisTimeTopicAnalysing : RestfulExecution<DisTimeTopic>
{
//public override object OnExecution(IRequest req, IResponse res)
//{
// var rtns = new RestfulQueryResponse<DisTimeTopic>();
// rtns.Results = new List<DisTimeTopic>();
// var conn = KiviiContext.GetOpenedDbConnection<Analyse>();
// var query = conn.From<Analyse>();
// query.OrderBy(o => o.PublishTime);
// query.Where(o => o.IsChecked == true);
// var allDisTimeTopics = conn.Select(query);
// var group = allDisTimeTopics.GroupBy(o => new { o.PublishTime, o.DomainName, o.Language });
// conn.InitEntityType<DisTimeTopic>();
// conn.Delete<DisTimeTopic>(o => o.Kvid == o.Kvid);
// foreach (var kv in group)
// {
// List<String> englishtext = new List<string>();
// List<String> chinesetext = new List<string>();
// var items = kv.ToList();
// if (kv.Key.Language == "英文")
// {
// for (var i = 0; i < items.Count(); i++)
// {
// englishtext.Add(items[i].Title + ". " + items[i].Abstract);
// }
// LemmatizeEn lem = new LemmatizeEn();
// var EnText = lem.lemmatizeEnglish(englishtext);
// CommandLineOption ldaoption = new CommandLineOption();
// ldaoption.topics = (int)Math.Ceiling(System.Math.Sqrt(EnText.Length));
// double normolK = 200;
// ldaoption.alpha = ldaoption.topics / normolK;
// ldaoption.beta = 0.5;
// ldaoption.savestep = 500;
// ldaoption.niters = 500;
// ldaoption.twords = 10;
// try
// {
// LDAGibbsSampling model = new LDAGibbsSampling();
// Corpora cor = new Corpora();
// cor.LoadDataFile(EnText);
// var lda = model.TrainNewModel(cor, ldaoption);
// for (int k = 0; k < lda.K; k++)
// {
// var wordsProbsList = new Dictionary<int, double>();
// for (int w = 0; w < lda.V; w++)
// {
// wordsProbsList.Add(w, lda.phi[k][w]);
// }
// var wordsProbsListOrdered = wordsProbsList.OrderBy(e => -e.Value).ToList();
// string word = "";
// List<double> TopicWordsProbability = new List<double>(); ;
// for (int i = 0; i < 10; i++)
// {
// word += cor.GetStringByID(wordsProbsListOrdered[i].Key) + "; ";
// TopicWordsProbability.Add(wordsProbsListOrdered[i].Value);
// }
// var DisTimeTopic = new DisTimeTopic();
// DisTimeTopic.Language = kv.Key.Language;
// DisTimeTopic.DomainName = kv.Key.DomainName;
// DisTimeTopic.Year = kv.Key.PublishTime;
// DisTimeTopic.Topic = "Topic " + k.ToString();
// DisTimeTopic.TopicWord = word;
// DisTimeTopic.TopicWordProbability = TopicWordsProbability;
// DisTimeTopic.Documentlist = lda.theta.ToString();
// DisTimeTopic.Parameter = "Aplha: " + lda.alpha.ToString() + ";" + "Beta: " + lda.beta.ToString() + ";" + "文档数: " + lda.M.ToString() + ";" + "主题数: " + lda.K.ToString() + ";" + "词袋数: " + lda.V.ToString() + ";" + "迭代次数:" + ldaoption.niters.ToString() + ";" + "LogLikelihood= " + lda.LogLikelihood.ToString();
// conn.Insert(DisTimeTopic);
// DisTimeTopic.RemoveAllOnlyProperties();
// rtns.Results.Add(DisTimeTopic);
// }
// }
// catch (Exception ex)
// {
// Console.WriteLine(ex.StackTrace);
// Console.WriteLine(ex.Message);
// }
// }
// if (kv.Key.Language == "中文")
// {
// for (var i = 0; i < items.Count(); i++)
// {
// chinesetext.Add(items[i].Title + "。" + items[i].Abstract);
// }
// ChinesePreprocessing pre = new ChinesePreprocessing();
// var CnText = pre.ChineseWordSegmentation(chinesetext);
// CommandLineOption ldaoption = new CommandLineOption();
// ldaoption.topics = (int)Math.Ceiling(System.Math.Sqrt(CnText.Length));
// double normolK = 200;
// ldaoption.alpha = ldaoption.topics / normolK;
// ldaoption.beta = 0.5;
// ldaoption.savestep = 500;
// ldaoption.niters = 500;
// ldaoption.twords = 10;
// try
// {
// LDAGibbsSampling model = new LDAGibbsSampling();
// Corpora cor = new Corpora();
// cor.LoadDataFile(CnText);
// var lda = model.TrainNewModel(cor, ldaoption);
// for (int k = 0; k < lda.K; k++)
// {
// var wordsProbsList = new Dictionary<int, double>();
// for (int w = 0; w < lda.V; w++)
// {
// wordsProbsList.Add(w, lda.phi[k][w]);
// }
// var wordsProbsListOrdered = wordsProbsList.OrderBy(e => -e.Value).ToList();
// string word = "";
// List<double> TopicWordsProbability = new List<double>(); ;
// for (int i = 0; i < 10; i++)
// {
// word += cor.GetStringByID(wordsProbsListOrdered[i].Key) + "; ";
// TopicWordsProbability.Add(wordsProbsListOrdered[i].Value);
// }
// var DisTimeTopic = new DisTimeTopic();
// DisTimeTopic.Language = kv.Key.Language;
// DisTimeTopic.DomainName = kv.Key.DomainName;
// DisTimeTopic.Year = kv.Key.PublishTime;
// DisTimeTopic.Topic = "Topic " + k.ToString();
// DisTimeTopic.TopicWord = word;
// DisTimeTopic.TopicWordProbability = TopicWordsProbability;
// DisTimeTopic.Documentlist = lda.theta.ToString();
// DisTimeTopic.Parameter = "Aplha: " + lda.alpha.ToString() + ";" + "Beta: " + lda.beta.ToString() + ";" + "文档数: " + lda.M.ToString() + ";" + "主题数: " + lda.K.ToString() + ";" + "词袋数: " + lda.V.ToString() + ";" + "迭代次数:" + ldaoption.niters.ToString() + ";" + "LogLikelihood= " + lda.LogLikelihood.ToString();
// conn.Insert(DisTimeTopic);
// DisTimeTopic.RemoveAllOnlyProperties();
// rtns.Results.Add(DisTimeTopic);
// }
// }
// catch (Exception ex)
// {
// Console.WriteLine(ex.StackTrace);
// Console.WriteLine(ex.Message);
// }
// }
// }
// rtns.Total = rtns.Results.Count();
// return rtns;
//}
}
[Api(Description = "主题演化分布")]
public class DisTopicEvolutionAnalysing : RestfulExecution<DisTopicEvolution>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisTopicEvolution>();
rtns.Results = new List<DisTopicEvolution>();
return rtns;
}
}
} }
...@@ -78,24 +78,59 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -78,24 +78,59 @@ namespace Njust.Pdf.Analysis.Tranforms
[Api(Description = "文献年份分布查询")] [Api(Description = "文献年份分布查询")]
public class DisTrendDistributed : RestfulExecution<DisTrend> public class DisTrendDistributed : RestfulExecution<DisTrend>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisTrend>(); var rtns = new RestfulQueryResponse<DisTrend>();
rtns.Results = new List<DisTrend>(); rtns.Results = new List<DisTrend>();
for (var i = 0; i < 20; i++) var conn = KiviiContext.GetOpenedDbConnection<DisTrend>();
{ var dynamicParams = Request.GetRequestParams();
var disTrend = new DisTrend(); var autoQuery = Request.TryResolve<IAutoQueryDb>();
disTrend.Language = "中文"; autoQuery.IncludeTotal = true;
disTrend.DomainName = "航空发动机"; var request = new RestfulQuery<DisTrend>();
if (i % 2 == 0) disTrend.DomainName = "隐身技术"; request = request.PopulateWith(this);
disTrend.Year = $"{2020 + i}"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
var disTrends = autoQuery.Execute(Request, conn, request, sqlExpress);
disTrend.Count = i * 3;
rtns.Results.Add(disTrend); rtns.Results.AddRange(disTrends.Results);
}
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//var rtns = new RestfulQueryResponse<DisTrend>();
//rtns.Results = new List<DisTrend>();
//for (var i = 0; i < 20; i++)
//{
// var disTrend = new DisTrend();
// disTrend.Language = "中文";
// disTrend.DomainName = "航空发动机";
// if (i % 2 == 0) disTrend.DomainName = "隐身技术";
// disTrend.Year = $"{2020 + i}";
// disTrend.Count = i * 3;
// rtns.Results.Add(disTrend);
//}
//rtns.Total = rtns.Results.Count();
//return rtns;
} }
} }
...@@ -138,7 +173,7 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -138,7 +173,7 @@ namespace Njust.Pdf.Analysis.Tranforms
rtns.Results.AddRange(disCoauthors.Results); rtns.Results.AddRange(disCoauthors.Results);
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//for (var i = 0; i < 20; i++) //for (var i = 0; i < 20; i++)
//{ //{
// var disCoauthor = new DisCoauthor(); // var disCoauthor = new DisCoauthor();
...@@ -156,241 +191,475 @@ namespace Njust.Pdf.Analysis.Tranforms ...@@ -156,241 +191,475 @@ namespace Njust.Pdf.Analysis.Tranforms
[Api(Description = "机构分布查询")] [Api(Description = "机构分布查询")]
public class DisOrganDistributed : RestfulExecution<DisOrgan> public class DisOrganDistributed : RestfulExecution<DisOrgan>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisOrgan>(); var rtns = new RestfulQueryResponse<DisOrgan>();
rtns.Results = new List<DisOrgan>(); rtns.Results = new List<DisOrgan>();
for (var i = 0; i < 20; i++) var conn = KiviiContext.GetOpenedDbConnection<DisOrgan>();
{ var dynamicParams = Request.GetRequestParams();
var disOrgran = new DisOrgan(); var autoQuery = Request.TryResolve<IAutoQueryDb>();
disOrgran.Language = "中文"; autoQuery.IncludeTotal = true;
disOrgran.DomainName = "航空发动机"; var request = new RestfulQuery<DisOrgan>();
if (i % 2 == 0) disOrgran.DomainName = "隐身技术"; request = request.PopulateWith(this);
disOrgran.Year = $"{2020 + i}"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
disOrgran.Organ = $"机构{i}"; var disOrgans = autoQuery.Execute(Request, conn, request, sqlExpress);
disOrgran.Count = i * 3;
rtns.Results.Add(disOrgran); rtns.Results.AddRange(disOrgans.Results);
}
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
// var rtns = new RestfulQueryResponse<DisOrgan>();
// rtns.Results = new List<DisOrgan>();
// for (var i = 0; i < 20; i++)
// {
// var disOrgran = new DisOrgan();
// disOrgran.Language = "中文";
// disOrgran.DomainName = "航空发动机";
// if (i % 2 == 0) disOrgran.DomainName = "隐身技术";
// disOrgran.Year = $"{2020 + i}";
// disOrgran.Organ = $"机构{i}";
// disOrgran.Count = i * 3;
// rtns.Results.Add(disOrgran);
// }
// rtns.Total = rtns.Results.Count();
// return rtns;
//}
} }
} }
[Api(Description = "机构合作分布查询")] [Api(Description = "机构合作分布查询")]
public class DisCoOrgranDistributed : RestfulExecution<DisCoOrgran> public class DisCoOrganDistributed : RestfulExecution<DisCoOrgan>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisCoOrgran>(); var rtns = new RestfulQueryResponse<DisCoOrgan>();
rtns.Results = new List<DisCoOrgran>(); rtns.Results = new List<DisCoOrgan>();
for (var i = 0; i < 20; i++) var conn = KiviiContext.GetOpenedDbConnection<DisCoOrgan>();
{ var dynamicParams = Request.GetRequestParams();
var disCoOrgran = new DisCoOrgran(); var autoQuery = Request.TryResolve<IAutoQueryDb>();
disCoOrgran.Language = "中文"; autoQuery.IncludeTotal = true;
disCoOrgran.DomainName = "航空发动机"; var request = new RestfulQuery<DisCoOrgan>();
if (i % 2 == 0) disCoOrgran.DomainName = "隐身技术"; request = request.PopulateWith(this);
disCoOrgran.Organ1 = $"机构{i}"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
disCoOrgran.Organ2 = $"机构{i + 1}"; var disCoOrgrans = autoQuery.Execute(Request, conn, request, sqlExpress);
disCoOrgran.Count = i * 2; rtns.Results.AddRange(disCoOrgrans.Results);
rtns.Results.Add(disCoOrgran);
}
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//var rtns = new RestfulQueryResponse<DisCoOrgran>();
//rtns.Results = new List<DisCoOrgran>();
//for (var i = 0; i < 20; i++)
//{
// var disCoOrgran = new DisCoOrgran();
// disCoOrgran.Language = "中文";
// disCoOrgran.DomainName = "航空发动机";
// if (i % 2 == 0) disCoOrgran.DomainName = "隐身技术";
// disCoOrgran.Organ1 = $"机构{i}";
// disCoOrgran.Organ2 = $"机构{i + 1}";
// disCoOrgran.Count = i * 2;
// rtns.Results.Add(disCoOrgran);
//}
//rtns.Total = rtns.Results.Count();
//return rtns;
} }
} }
[Api(Description = "国家分布查询")] [Api(Description = "国家分布查询")]
public class DisCountryDistributed : RestfulExecution<DisCountry> public class DisCountryDistributed : RestfulExecution<DisCountry>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisCountry>(); var rtns = new RestfulQueryResponse<DisCountry>();
rtns.Results = new List<DisCountry>(); rtns.Results = new List<DisCountry>();
for (var i = 0; i < 20; i++) var conn = KiviiContext.GetOpenedDbConnection<DisCountry>();
{ var dynamicParams = Request.GetRequestParams();
var disCountry = new DisCountry(); var autoQuery = Request.TryResolve<IAutoQueryDb>();
disCountry.Language = "中文"; autoQuery.IncludeTotal = true;
disCountry.DomainName = "航空发动机"; var request = new RestfulQuery<DisCountry>();
if (i % 2 == 0) disCountry.DomainName = "隐身技术"; request = request.PopulateWith(this);
disCountry.Year = $"{2020 + i}"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
disCountry.Country = $"国家{i}"; var disCountrys = autoQuery.Execute(Request, conn, request, sqlExpress);
disCountry.Count = i * 3;
rtns.Results.Add(disCountry);
}
rtns.Total = rtns.Results.Count();
return rtns;
}
}
[Api(Description = "国家合作分布查询")] rtns.Results.AddRange(disCountrys.Results);
public class DisCoCountryDistributed : RestfulExecution<DisCoCountry>
{
public override object OnExecution(IRequest req, IResponse res)
{
var rtns = new RestfulQueryResponse<DisCoCountry>();
rtns.Results = new List<DisCoCountry>();
for (var i = 0; i < 20; i++)
{
var disCoCountry = new DisCoCountry();
disCoCountry.Language = "中文";
disCoCountry.DomainName = "航空发动机";
if (i % 2 == 0) disCoCountry.DomainName = "隐身技术";
disCoCountry.Country1 = $"国家{i}";
disCoCountry.Country2 = $"国家{i + 1}";
disCoCountry.Count = i * 3;
rtns.Results.Add(disCoCountry);
}
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//var rtns = new RestfulQueryResponse<DisCountry>();
//rtns.Results = new List<DisCountry>();
//for (var i = 0; i < 20; i++)
//{
// var disCountry = new DisCountry();
// disCountry.Language = "中文";
// disCountry.DomainName = "航空发动机";
// if (i % 2 == 0) disCountry.DomainName = "隐身技术";
// disCountry.Year = $"{2020 + i}";
// disCountry.Country = $"国家{i}";
// disCountry.Count = i * 3;
// rtns.Results.Add(disCountry);
//}
//rtns.Total = rtns.Results.Count();
//return rtns;
} }
} }
[Api(Description = "基金分布查询")] //[Api(Description = "国家合作分布查询")]
public class DisFundDistributed : RestfulExecution<DisFund> //public class DisCoCountryDistributed : RestfulExecution<DisCoCountry>
{ //{
public override object OnExecution(IRequest req, IResponse res) // public override object OnExecution(IRequest req, IResponse res)
{ // {
var rtns = new RestfulQueryResponse<DisFund>(); // var rtns = new RestfulQueryResponse<DisCoCountry>();
rtns.Results = new List<DisFund>(); // rtns.Results = new List<DisCoCountry>();
for (var i = 0; i < 20; i++) // for (var i = 0; i < 20; i++)
{ // {
var disFund = new DisFund(); // var disCoCountry = new DisCoCountry();
disFund.Language = "中文"; // disCoCountry.Language = "中文";
disFund.DomainName = "航空发动机"; // disCoCountry.DomainName = "航空发动机";
if (i % 2 == 0) disFund.DomainName = "隐身技术"; // if (i % 2 == 0) disCoCountry.DomainName = "隐身技术";
disFund.Year = $"{2020 + i}"; // disCoCountry.Country1 = $"国家{i}";
disFund.Fund = $"基金{i}"; // disCoCountry.Country2 = $"国家{i + 1}";
disFund.Count = i * 3; // disCoCountry.Count = i * 3;
rtns.Results.Add(disFund); // rtns.Results.Add(disCoCountry);
} // }
rtns.Total = rtns.Results.Count(); // rtns.Total = rtns.Results.Count();
return rtns; // return rtns;
} // }
} //}
//[Api(Description = "基金分布查询")]
//public class DisFundDistributed : RestfulExecution<DisFund>
//{
// public override object OnExecution(IRequest req, IResponse res)
// {
// var rtns = new RestfulQueryResponse<DisFund>();
// rtns.Results = new List<DisFund>();
// for (var i = 0; i < 20; i++)
// {
// var disFund = new DisFund();
// disFund.Language = "中文";
// disFund.DomainName = "航空发动机";
// if (i % 2 == 0) disFund.DomainName = "隐身技术";
// disFund.Year = $"{2020 + i}";
// disFund.Fund = $"基金{i}";
// disFund.Count = i * 3;
// rtns.Results.Add(disFund);
// }
// rtns.Total = rtns.Results.Count();
// return rtns;
// }
//}
[Api(Description = "来源分布查询")] [Api(Description = "来源分布查询")]
public class DisSourceDistributed : RestfulExecution<DisSource> public class DisSourceDistributed : RestfulExecution<DisSource>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisSource>(); var rtns = new RestfulQueryResponse<DisSource>();
rtns.Results = new List<DisSource>(); rtns.Results = new List<DisSource>();
for (var i = 0; i < 20; i++) var conn = KiviiContext.GetOpenedDbConnection<DisSource>();
{ var dynamicParams = Request.GetRequestParams();
var disSource = new DisSource(); var autoQuery = Request.TryResolve<IAutoQueryDb>();
disSource.Language = "中文"; autoQuery.IncludeTotal = true;
disSource.DomainName = "航空发动机"; var request = new RestfulQuery<DisSource>();
if (i % 2 == 0) disSource.DomainName = "隐身技术"; request = request.PopulateWith(this);
disSource.Year = $"{2020 + i}"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
disSource.Source = $"机构{i}"; var disSources = autoQuery.Execute(Request, conn, request, sqlExpress);
disSource.Count = i * 3;
rtns.Results.Add(disSource); rtns.Results.AddRange(disSources.Results);
}
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//var rtns = new RestfulQueryResponse<DisSource>();
//rtns.Results = new List<DisSource>();
//for (var i = 0; i < 20; i++)
//{
// var disSource = new DisSource();
// disSource.Language = "中文";
// disSource.DomainName = "航空发动机";
// if (i % 2 == 0) disSource.DomainName = "隐身技术";
// disSource.Year = $"{2020 + i}";
// disSource.Source = $"机构{i}";
// disSource.Count = i * 3;
// rtns.Results.Add(disSource);
//}
//rtns.Total = rtns.Results.Count();
//return rtns;
} }
} }
[Api(Description = "关键词共现查询")] [Api(Description = "关键词共现查询")]
public class DisCoKeywordDistributed : RestfulExecution<DisCoKeyword> public class DisCoKeywordDistributed : RestfulExecution<DisCoKeyword>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisCoKeyword>(); var rtns = new RestfulQueryResponse<DisCoKeyword>();
rtns.Results = new List<DisCoKeyword>(); rtns.Results = new List<DisCoKeyword>();
for (var i = 0; i < 20; i++) var conn = KiviiContext.GetOpenedDbConnection<DisCoKeyword>();
{ var dynamicParams = Request.GetRequestParams();
var disCoKeyword = new DisCoKeyword(); var autoQuery = Request.TryResolve<IAutoQueryDb>();
disCoKeyword.Language = "中文"; autoQuery.IncludeTotal = true;
disCoKeyword.DomainName = "航空发动机"; var request = new RestfulQuery<DisCoKeyword>();
if (i % 2 == 0) disCoKeyword.DomainName = "隐身技术"; request = request.PopulateWith(this);
disCoKeyword.KeyWord1 = $"关键词{i}"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
disCoKeyword.KeyWord2 = $"关键词{i + 1}"; var disCoKeywords = autoQuery.Execute(Request, conn, request, sqlExpress);
disCoKeyword.Count = i * 3;
rtns.Results.Add(disCoKeyword); rtns.Results.AddRange(disCoKeywords.Results);
}
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//var rtns = new RestfulQueryResponse<DisCoKeyword>();
//rtns.Results = new List<DisCoKeyword>();
//for (var i = 0; i < 20; i++)
//{
// var disCoKeyword = new DisCoKeyword();
// disCoKeyword.Language = "中文";
// disCoKeyword.DomainName = "航空发动机";
// if (i % 2 == 0) disCoKeyword.DomainName = "隐身技术";
// disCoKeyword.KeyWord1 = $"关键词{i}";
// disCoKeyword.KeyWord2 = $"关键词{i + 1}";
// disCoKeyword.Count = i * 3;
// rtns.Results.Add(disCoKeyword);
//}
//rtns.Total = rtns.Results.Count();
//return rtns;
} }
} }
[Api(Description = "时序主题分布查询")] [Api(Description = "时序主题分布查询")]
public class DisTimeTopicDistributed : RestfulExecution<DisTimeTopic> public class DisTimeTopicDistributed : RestfulExecution<DisTimeTopic>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisTimeTopic>(); var rtns = new RestfulQueryResponse<DisTimeTopic>();
rtns.Results = new List<DisTimeTopic>(); rtns.Results = new List<DisTimeTopic>();
for (var i = 0; i < 10; i++) var conn = KiviiContext.GetOpenedDbConnection<DisTimeTopic>();
{ var dynamicParams = Request.GetRequestParams();
for (var j = 0; j < 6; j++) var autoQuery = Request.TryResolve<IAutoQueryDb>();
{ autoQuery.IncludeTotal = true;
var disTimeTopic = new DisTimeTopic(); var request = new RestfulQuery<DisTimeTopic>();
disTimeTopic.Language = "中文"; request = request.PopulateWith(this);
disTimeTopic.DomainName = "航空发动机"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
if (j % 2 == 0) disTimeTopic.DomainName = "隐身技术"; var disTimeTopics = autoQuery.Execute(Request, conn, request, sqlExpress);
disTimeTopic.Year = $"{2020 + i}";
disTimeTopic.Topic = $"Topic{j}";
disTimeTopic.TopicWord = "";
disTimeTopic.TopicWordProbability = "";
for (var x = 0; x < 10; x++)
{
disTimeTopic.TopicWord = disTimeTopic.TopicWord + $"主题词{x},";
disTimeTopic.TopicWordProbability = disTimeTopic.TopicWordProbability + $"{1 - x * 0.05},";
}
rtns.Results.Add(disTimeTopic);
}
}
rtns.Results.AddRange(disTimeTopics.Results);
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//var rtns = new RestfulQueryResponse<DisTimeTopic>();
//rtns.Results = new List<DisTimeTopic>();
//for (var i = 0; i < 10; i++)
//{
// for (var j = 0; j < 6; j++)
// {
// var disTimeTopic = new DisTimeTopic();
// disTimeTopic.Language = "中文";
// disTimeTopic.DomainName = "航空发动机";
// if (j % 2 == 0) disTimeTopic.DomainName = "隐身技术";
// disTimeTopic.Year = $"{2020 + i}";
// disTimeTopic.Topic = $"Topic{j}";
// disTimeTopic.TopicWord = "";
// disTimeTopic.TopicWordProbability = "";
// for (var x = 0; x < 10; x++)
// {
// disTimeTopic.TopicWord = disTimeTopic.TopicWord + $"主题词{x},";
// disTimeTopic.TopicWordProbability = disTimeTopic.TopicWordProbability + $"{1 - x * 0.05},";
// }
// rtns.Results.Add(disTimeTopic);
// }
//}
//rtns.Total = rtns.Results.Count();
//return rtns;
} }
} }
[Api(Description = "主题演化分布查询")] [Api(Description = "主题演化分布查询")]
public class DisTopicEvolutionDistributed : RestfulExecution<DisTopicEvolution> public class DisTopicEvolutionDistributed : RestfulExecution<DisTopicEvolution>
{ {
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public override object OnExecution(IRequest req, IResponse res) public override object OnExecution(IRequest req, IResponse res)
{ {
var rtns = new RestfulQueryResponse<DisTopicEvolution>(); var rtns = new RestfulQueryResponse<DisTopicEvolution>();
rtns.Results = new List<DisTopicEvolution>(); rtns.Results = new List<DisTopicEvolution>();
for (var i = 0; i < 10; i++) var conn = KiviiContext.GetOpenedDbConnection<DisTopicEvolution>();
{ var dynamicParams = Request.GetRequestParams();
for (var j = 0; j < 6; j++) var autoQuery = Request.TryResolve<IAutoQueryDb>();
{ autoQuery.IncludeTotal = true;
var disTopicEvolution = new DisTopicEvolution(); var request = new RestfulQuery<DisTopicEvolution>();
disTopicEvolution.Language = "中文"; request = request.PopulateWith(this);
disTopicEvolution.DomainName = "航空发动机"; var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
if (j % 2 == 0) disTopicEvolution.DomainName = "隐身技术"; var disTopicEvolutions = autoQuery.Execute(Request, conn, request, sqlExpress);
disTopicEvolution.SourceYear = $"{2020 + i}";
disTopicEvolution.TargetYear = $"{2021 + i}";
disTopicEvolution.SourceTopic = $"Topic{j}";
disTopicEvolution.TargeTopic = $"Topic{j + 1}";
disTopicEvolution.SourceTopicWord = "";
disTopicEvolution.TargetTopicWord = "";
for (var x = 0; x < 3; x++)
{
disTopicEvolution.SourceTopicWord = disTopicEvolution.SourceTopicWord + $"主题词{x},";
disTopicEvolution.TargetTopicWord = disTopicEvolution.TargetTopicWord + $"主题词{x},";
}
rtns.Results.Add(disTopicEvolution);
}
}
rtns.Results.AddRange(disTopicEvolutions.Results);
rtns.Total = rtns.Results.Count(); rtns.Total = rtns.Results.Count();
return rtns; return rtns;
//var rtns = new RestfulQueryResponse<DisTopicEvolution>();
//rtns.Results = new List<DisTopicEvolution>();
//for (var i = 0; i < 10; i++)
//{
// for (var j = 0; j < 6; j++)
// {
// var disTopicEvolution = new DisTopicEvolution();
// disTopicEvolution.Language = "中文";
// disTopicEvolution.DomainName = "航空发动机";
// if (j % 2 == 0) disTopicEvolution.DomainName = "隐身技术";
// disTopicEvolution.SourceYear = $"{2020 + i}";
// disTopicEvolution.TargetYear = $"{2021 + i}";
// disTopicEvolution.SourceTopic = $"Topic{j}";
// disTopicEvolution.TargeTopic = $"Topic{j + 1}";
// disTopicEvolution.SourceTopicWord = "";
// disTopicEvolution.TargetTopicWord = "";
// for (var x = 0; x < 3; x++)
// {
// disTopicEvolution.SourceTopicWord = disTopicEvolution.SourceTopicWord + $"主题词{x},";
// disTopicEvolution.TargetTopicWord = disTopicEvolution.TargetTopicWord + $"主题词{x},";
// }
// rtns.Results.Add(disTopicEvolution);
// }
//}
//rtns.Total = rtns.Results.Count();
//return rtns;
} }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment