📄 report.cs
字号:
using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Collections;
using SECompare.Structure;
namespace SECompare.Kernel
{
/// <summary>
/// Summary description for StatisticReport.
/// </summary>
public class Report:ThreadStatus
{
private String m_Filename;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="filename">the file to store report, which should be an HTML file(.html).</param>
public Report(String filename)
{
this.m_Filename = filename;
this.threadStart = new ThreadStart(Run);
}
/// <summary>
/// Create and save statistic report.
/// </summary>
private void Run()
{
//Create report file
FileInfo file = new FileInfo(m_Filename);
FileStream fs = file.Create();
fs.Close();
//define writer
StreamWriter w = new StreamWriter(m_Filename,true);
//Get all Crawled sample files
String folder = (new SECompare.Config.Config()).SamplingedQueryRoot;
String[] files = Directory.GetFiles(folder);
//**********Write table title**********
String title = @"<title>Crawled Data Statistic Report</title>";
String css = @"<style type=text/css>td {font-size: 12px;}</style>";
w.Write(title+css+"<p><h1 align=center>Query Sample and Crawled Data Statistic Report</h1></p>");
//*************************************
//Get all Supported engines
EngineSet[] engines = Structure.EngineSetting.GetEngineEnums();
//for each category file
for(int i=0;i<files.Length;i++)
{
file = new FileInfo(files[i]);
String category = file.Name;
//************Progress Status Report************
this.mProcessingFile = category;
this.mFilePercentage = (float)i/files.Length;
//**********************************************
//read query samples
CrawlSample sample = new CrawlSample();
sample.Load(category,files[i]);
ArrayList queries = sample.GetSamples();
//****************Write Report****************
String categoryLine =
"<h2 align=center>Category "+(i+1).ToString()+":"+category
+"("+ sample.Count + " samples)"
+"</h2><br><table align=center border=1><tr bgcolor=silver>"
+"<td>Query Words</td><td>Frequency</td>";
foreach(EngineSet engine in engines)
categoryLine += "<td>" + engine.ToString() + " Count</td>";
categoryLine += "</tr>";
w.Write(categoryLine);
//**********************************************
//for each query
for(int j=0;j<queries.Count;j++)
{
CrawlSampleUnit query = (CrawlSampleUnit)queries[j];
//************Progress Status Report************
this.mProcessingEntry = query.Words;
this.mEntryPercentage = (float)j/queries.Count;
//**********************************************
//************Write result set counts***********
String word = query.Words;
if(word.Length>40)
word = word.Substring(0,40);
w.Write("<tr><td>" + word + "</td><td>"+query.Frequency+"</td>");
foreach(EngineSet engine in engines)
w.Write("<td>" + QueryResults.GetMaxRank(word,engine.ToString()) + "</td>");
w.Write("</tr>");
//***********************************************
}
//****Write table tail****
w.Write("</table>");
//************************
}
w.Close();
//************Progress Status Report***********
this.mIsFinished = true;
//*********************************************
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -