searchform.cs
来自「KTDictSeg 简介: KTDictSeg 是由KaiToo搜索开发的一款基」· CS 代码 · 共 157 行
CS
157 行
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using SimpleSearch;
using SimpleSearch.News;
using System.Diagnostics;
namespace Demo.KTDictSegAnalyzer
{
public partial class SearchForm : Form
{
public SearchForm()
{
InitializeComponent();
}
private void SearchForm_Load(object sender, EventArgs e)
{
try
{
Index.INDEX_DIR = System.IO.Path.GetFullPath(Index.INDEX_DIR);
Index.CreateIndex(Index.INDEX_DIR);
SearchPage searchPage = new SearchPage();
webBrowserSearch.DocumentText = searchPage.GetStartPage();
}
catch (Exception e1)
{
MessageBox.Show(e1.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void insertNewsToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
FormInsert frmInsert = new FormInsert();
frmInsert.ShowDialog();
}
catch (Exception e1)
{
MessageBox.Show(e1.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void rebuildToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
Index.Rebuild(Index.INDEX_DIR);
}
catch (Exception e1)
{
MessageBox.Show(e1.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void HtmlElement_OnSearch(Object sender, EventArgs e)
{
HtmlElement keywords = webBrowserSearch.Document.All["Keywords"];
String text = keywords.GetAttribute("Value");
List<TNews> news = Index.Search(Index.INDEX_DIR, text);
SearchPage searchPage = new SearchPage();
webBrowserSearch.DocumentText = searchPage.GetResultPage(news);
}
private void webBrowserSearch_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement searchButton = webBrowserSearch.Document.All["Search"];
searchButton.Click += new HtmlElementEventHandler(HtmlElement_OnSearch);
}
private void batchInsertToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
FormBatchInsert frmBatchInsert = new FormBatchInsert();
frmBatchInsert.Show();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(openFileDialog.FileName);
XmlNodeList nodes = xmlDoc.SelectNodes(@"News/Item");
Stopwatch watch = new Stopwatch();
Lucene.Net.Analysis.KTDictSeg.KTDictSegAnalyzer.Duration = 0;
DateTime old = DateTime.Now;
int count = 0;
int MaxCount = Math.Min(40000, nodes.Count);
long totalChars = 0;
Index.CreateIndex(Index.INDEX_DIR);
Index.MaxMergeFactor = 100;
Index.MinMergeDocs = 100;
foreach (XmlNode node in nodes)
{
String title = node.Attributes["Title"].Value;
DateTime time = DateTime.Parse(node.Attributes["Time"].Value);
String Url = node.Attributes["Url"].Value;
String content = node.Attributes["Content"].Value;
totalChars += title.Length + 8 + Url.Length + content.Length;
#if DEBUG
watch.Start();
#endif
Index.IndexString(Index.INDEX_DIR, Url, title,
time, content);
#if DEBUG
watch.Stop();
#endif
count++;
frmBatchInsert.Progress = count * 100 / MaxCount;
if (count >= MaxCount)
{
break;
}
}
#if DEBUG
watch.Start();
#endif
Index.Close();
#if DEBUG
watch.Stop();
#endif
TimeSpan s = DateTime.Now - old;
MessageBox.Show(String.Format("插入{0}行数据,共{1}字符,用时{2}秒 分词用时{3}秒",
MaxCount, totalChars, watch.ElapsedMilliseconds / 1000 + "." + watch.ElapsedMilliseconds % 1000,
Lucene.Net.Analysis.KTDictSeg.KTDictSegAnalyzer.Duration / 1000 + "." +
Lucene.Net.Analysis.KTDictSeg.KTDictSegAnalyzer.Duration % 1000),
"Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception e1)
{
MessageBox.Show(e1.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?