lucene.net mysql_用Lucene[1].net对数据库建立索引及搜索+

这篇博客展示了如何使用C#和Lucene.NET库来为MySQL数据库中的userblog表建立全文索引,并实现搜索功能。通过连接数据库获取数据,创建索引字段,并在用户输入查询时进行搜索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cs代码

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

...{

/** 

/// WebForm1 的摘要说明。

/// 

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 窗体设计器生成的代码#region Web 窗体设计器生成的代码

override protected void OnInit(EventArgs e)

...{

//

// CODEGEN: 该调用是ASP.NET Web窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}

/** 

/// 设计器支持所需的方法-不要使用代码编辑器修改

/// 此方法的内容。

/// 

private void InitializeComponent()

...{

this.Search.Click += new System.EventHandler(this.Search_Click);

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

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

...{

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

...{

//

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值