lucene.net 数据库全文索引
来源:互联网 发布:mysql数据库密码忘记 编辑:程序博客网 时间:2024/05/17 07:48
以下是笔者研究1天后的结果,不知道对不对
但是程序可以运行了
建立索引,将索引存放在c:/index目录
ChineseAnalyzer()方法是lucene的检索方法,默认的是有4种但是没有ChineseAnalyzer
我这里的ChineseAnalyzer()是我下载的dll作者后写的应该是这样
IndexWriter writer = new IndexWriter("c:/index/", new ChineseAnalyzer(), true);
用document.add()方法将需要被检索的内容加入lucene自己的字段
Field.Keyword(string "可以为任意字符,这里起到一个key的作用",string "被检索的内容")
Document doc = new Document();
doc.Add(Field.Keyword("id", myred["id"].ToString()));
源代码如下:
为数据库建立索引
public partial class Default2 : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
}
SqlConnection con = null;
DateTime start = DateTime.Now;
protected void Button1_Click(object sender, EventArgs e)
...{
string connstr = "server=localhost;uid=test;pwd=111;database=yaofanzi;";
//获取数据库连接,生成连接对象;
con = new SqlConnection(connstr);
//连接成功
con.Open();
CreateIndex(ExecuteQuery("select id,title,gongneng,chengfen,shenhe from [cp]"));
}
protected void Button2_Click(object sender, EventArgs e)
...{
DataRow myrow;
DataTable mytab = new DataTable();
mytab.Columns.Add("id");
mytab.Columns.Add("title");
mytab.Columns.Add("gongneng");
mytab.Columns.Add("chengfen");
mytab.Columns.Add("shenhe");
mytab.Clear();
Hits myhit=seacher("wklilong");
Response.Write(myhit.Length());
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("gongneng").ToString();
myrow[3] = doc.Get("chengfen").ToString();
myrow[4] = doc.Get("shenhe").ToString();
mytab.Rows.Add(myrow);
myrow.AcceptChanges();
}
}
else
...{
Response.Write("Hits为空");
}
}
//获得查询结果
public SqlDataReader ExecuteQuery(string sql)
...{
//连接完成,用Command访问数据库
SqlCommand command = new SqlCommand(sql, con);
ArrayList list = new ArrayList();
//用DataReader读取数据 , 输出
SqlDataReader datareader = command.ExecuteReader();
return datareader;
}
//建立索引
public IndexWriter CreateIndex(SqlDataReader myred)
...{
IndexWriter writer = null;
try
...{
writer = new IndexWriter("c:/index/", new ChineseAnalyzer(), true);
//建立索引字段
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("gongneng", myred["gongneng"].ToString()));
doc.Add(Field.Text("chengfen", myred["chengfen"].ToString()));
doc.Add(Field.Text("shenhe", myred["shenhe"].ToString()));
writer.AddDocument(doc);
}
writer.Optimize();
writer.Close();
Response.Write("建立索引成功");
}
catch (Exception e)
...{
Response.Write(e.ToString());
}
return writer;
}
//搜索
public Hits seacher(String queryString)
...{
Hits hits = null;
try
...{
IndexSearcher mysea = new IndexSearcher("c:/index/");
Query query = QueryParser.Parse(queryString, "password", new ChineseAnalyzer());
start = DateTime.Now;
hits = mysea.Search(query);
TimeSpan s = DateTime.Now - start;
Response.Write("搜索到" + hits.Length() + "个结果,共用时:" + s.Milliseconds + "毫秒" + "<br>");
return hits;
}
catch (Exception e)
...{
Response.Write("没有搜索到结果?:" + e.ToString());
return null;
}
}
}
public partial class Default2 : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
}
SqlConnection con = null;
DateTime start = DateTime.Now;
protected void Button1_Click(object sender, EventArgs e)
...{
string connstr = "server=localhost;uid=test;pwd=111;database=yaofanzi;";
//获取数据库连接,生成连接对象;
con = new SqlConnection(connstr);
//连接成功
con.Open();
CreateIndex(ExecuteQuery("select id,title,gongneng,chengfen,shenhe from [cp]"));
}
protected void Button2_Click(object sender, EventArgs e)
...{
DataRow myrow;
DataTable mytab = new DataTable();
mytab.Columns.Add("id");
mytab.Columns.Add("title");
mytab.Columns.Add("gongneng");
mytab.Columns.Add("chengfen");
mytab.Columns.Add("shenhe");
mytab.Clear();
Hits myhit=seacher("wklilong");
Response.Write(myhit.Length());
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("gongneng").ToString();
myrow[3] = doc.Get("chengfen").ToString();
myrow[4] = doc.Get("shenhe").ToString();
mytab.Rows.Add(myrow);
myrow.AcceptChanges();
}
}
else
...{
Response.Write("Hits为空");
}
}
//获得查询结果
public SqlDataReader ExecuteQuery(string sql)
...{
//连接完成,用Command访问数据库
SqlCommand command = new SqlCommand(sql, con);
ArrayList list = new ArrayList();
//用DataReader读取数据 , 输出
SqlDataReader datareader = command.ExecuteReader();
return datareader;
}
//建立索引
public IndexWriter CreateIndex(SqlDataReader myred)
...{
IndexWriter writer = null;
try
...{
writer = new IndexWriter("c:/index/", new ChineseAnalyzer(), true);
//建立索引字段
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("gongneng", myred["gongneng"].ToString()));
doc.Add(Field.Text("chengfen", myred["chengfen"].ToString()));
doc.Add(Field.Text("shenhe", myred["shenhe"].ToString()));
writer.AddDocument(doc);
}
writer.Optimize();
writer.Close();
Response.Write("建立索引成功");
}
catch (Exception e)
...{
Response.Write(e.ToString());
}
return writer;
}
//搜索
public Hits seacher(String queryString)
...{
Hits hits = null;
try
...{
IndexSearcher mysea = new IndexSearcher("c:/index/");
Query query = QueryParser.Parse(queryString, "password", new ChineseAnalyzer());
start = DateTime.Now;
hits = mysea.Search(query);
TimeSpan s = DateTime.Now - start;
Response.Write("搜索到" + hits.Length() + "个结果,共用时:" + s.Milliseconds + "毫秒" + "<br>");
return hits;
}
catch (Exception e)
...{
Response.Write("没有搜索到结果?:" + e.ToString());
return null;
}
}
}
- lucene.net 数据库全文索引
- Lucene.Net 全文索引笔记
- 应用Lucene.net建立全文索引引擎
- 应用Lucene.net建立全文索引引擎
- lucene对整个数据库建立全文索引
- lucene全文索引
- Lucene-全文索引
- 全文索引 Lucene初探
- Lucene-全文索引
- 初识Lucene全文索引
- Lucene .NET 全文检索
- 全文索引与Lucene简介
- Lucene Sphinx 全文索引 对比
- 全文索引 (二)lucene 索引管理
- Lucene.net 实现全文搜索
- Lucene.net实现全文搜索
- Lucene.net实现全文搜索
- Lucene.net 实现全文搜索
- 任意变量二进制输出(c++)
- 直接调用类成员函数地址
- Annotated Hadoop: 第一节 Hadoop是什么
- Annotated Hadoop: 第二节 MapReduce框架结构
- Annotated Hadoop: 第三节 MapReduce工作原理
- lucene.net 数据库全文索引
- oracle 日期
- SQL2005下使用CTE的一个示例
- 理解Windows消息循环
- Oracle WHERE条件执行顺序
- 电子商务教学网的成长日记【谢刚,www.ecjxw.com】
- 如何实现进程间的通信
- sql索引建立,与sql语句优化,sql分页存储过程
- 据说是比尔盖茨的十句话