
using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using Lucene.Net;

using Lucene.Net.Index;

using Lucene.Net.Documents;

using Lucene.Net.QueryParsers;

using Lucene.Net.Search;

using Lucene.Net.Analysis.Standard;

using Lucene.Net.Analysis.Cn;

namespace WebApplication4

{

/// <summary>

/// WebForm1 的摘要说明。

/// </summary>

public class WebForm1 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.TextBox tj;

protected System.Web.UI.WebControls.Button Search;

protected System.Web.UI.WebControls.DataGrid SearGrid;

public string connstr="server=.;database=TopWin2;uid=sa;pwd=";

private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

if (!Page.IsPostBack)

{

//打开数据库表

SqlDataReader myred=OpenTable();

//建立索引

IndexWriter writer=CreateIndex(myred);

}

}

public SqlDataReader OpenTable()

{

SqlConnection mycon=new SqlConnection(connstr);

mycon.Open();

SqlCommand mycom=new SqlCommand("select id,title,content from userblog order by id",mycon);

return mycom.ExecuteReader();

}

public IndexWriter CreateIndex(SqlDataReader myred)

{

IndexWriter writer = new IndexWriter("c:/index/", new ChineseAnalyzer(), true);

try

{

//建立索引字段

while(myred.Read())

{

Document doc=new Document();

doc.Add(Field.Keyword("id",myred["id"].ToString()));

doc.Add(Field.Text("title",myred["title"].ToString()));

doc.Add(Field.Text("content",myred["content"].ToString()));

writer.AddDocument(doc);

}

writer.Optimize();

writer.Close();

}

catch(Exception e)

{

Response.Write(e);

}

return writer;

}

public Hits seacher(String queryString)

{

Hits hits=null;

try

{

IndexSearcher mysea=new IndexSearcher("c:/index/");

Query query=QueryParser.Parse(queryString,"content",new ChineseAnalyzer());

hits=mysea.Search(query);

}

catch(Exception e)

{

Response.Write(e);

}

return hits;

}

Web 窗体设计器生成的代码

private void Search_Click(object sender, System.EventArgs e)

{

DataRow myrow;

DataTable mytab=new DataTable();

mytab.Columns.Add("id");

mytab.Columns.Add("title");

mytab.Columns.Add("content");

mytab.Clear();

Hits myhit=seacher(this.tj.Text.Trim());

if (myhit!=null)

{

for(int i=0;i<myhit.Length();i++)

{

Document doc=myhit.Doc(i);

myrow=mytab.NewRow();

myrow[0]=doc.Get("id").ToString();

myrow[1]=doc.Get("title").ToString();

myrow[2]=doc.Get("content").ToString();

mytab.Rows.Add(myrow);

myrow.AcceptChanges();

}

this.SearGrid.DataSource=mytab;

this.SearGrid.DataBind();

}

else

{

//

}

}

}

}