最近在学习lucene碰到这样的问题,找不到解决的办法,想寻求高手指点。谢谢文件“e:\Index\_4.cfs”正由另一进程使用,因此该进程无法访问该文件。我把索引建在了e:\Index。在开始运行时,效果挺好,但运行第二次时,就出现了这个问题。下面是关于创建索引的代码:
protected void Page_Load(object sender, EventArgs e)
{
//打开数据库表
SqlDataReader myred = GetResult();
//建立索引
IndexWriter writer =Index(myred);
} /// <summary>
/// 新建一个方法getResutl(String),它返回的是数据库表Authors的内容。
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public SqlDataReader GetResult()
{
SqlDataReader myReader = null;
try
{
string str = queryString.Text.Trim();
string cmdText = "select * from Authors where city like '%" + str + "%'";
SqlCommand myCommand = new SqlCommand(cmdText ,myConnection );
myConnection.Open();
myReader= myCommand.ExecuteReader();
}
catch(SqlException e)
{
Response.Write(e);
}
return myReader;
}
public Analyzer getAnalyzer()
{
return new StandardAnalyzer();
} /// <summary>
/// 为数据库建立索引。
/// </summary>
/// <param name="myReader"></param>
public IndexWriter Index(SqlDataReader myReader)
{
IndexWriter writer = new IndexWriter("e:/Index/", getAnalyzer(), true);
try
{
while(myReader.Read ())
{
Document doc=new Document();
doc.Add(Field.Keyword("id", myReader["au_id"].ToString ()));
doc.Add(Field.Text("name", myReader["au_name"].ToString ()));
doc.Add(Field.UnIndexed("address", myReader["address"].ToString ()));
doc.Add(Field.UnIndexed("phone", myReader["phone"].ToString ()));
doc.Add(Field.Text("City", myReader["city"].ToString ()));
writer.AddDocument(doc);
}
myReader.Close();
myConnection.Close();
writer.Optimize();
writer.Close();
}
catch(SqlException e)
{
Response.Write(e);
}
return writer ;
}
protected void Page_Load(object sender, EventArgs e)
{
//打开数据库表
SqlDataReader myred = GetResult();
//建立索引
IndexWriter writer =Index(myred);
} /// <summary>
/// 新建一个方法getResutl(String),它返回的是数据库表Authors的内容。
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public SqlDataReader GetResult()
{
SqlDataReader myReader = null;
try
{
string str = queryString.Text.Trim();
string cmdText = "select * from Authors where city like '%" + str + "%'";
SqlCommand myCommand = new SqlCommand(cmdText ,myConnection );
myConnection.Open();
myReader= myCommand.ExecuteReader();
}
catch(SqlException e)
{
Response.Write(e);
}
return myReader;
}
public Analyzer getAnalyzer()
{
return new StandardAnalyzer();
} /// <summary>
/// 为数据库建立索引。
/// </summary>
/// <param name="myReader"></param>
public IndexWriter Index(SqlDataReader myReader)
{
IndexWriter writer = new IndexWriter("e:/Index/", getAnalyzer(), true);
try
{
while(myReader.Read ())
{
Document doc=new Document();
doc.Add(Field.Keyword("id", myReader["au_id"].ToString ()));
doc.Add(Field.Text("name", myReader["au_name"].ToString ()));
doc.Add(Field.UnIndexed("address", myReader["address"].ToString ()));
doc.Add(Field.UnIndexed("phone", myReader["phone"].ToString ()));
doc.Add(Field.Text("City", myReader["city"].ToString ()));
writer.AddDocument(doc);
}
myReader.Close();
myConnection.Close();
writer.Optimize();
writer.Close();
}
catch(SqlException e)
{
Response.Write(e);
}
return writer ;
}
解决方案 »
- 建一个工资表,而这个列的项目名称和数量是运行时确定的,你觉得如何搞?
- 菜鸟提问,窗体间数据共享
- DataSet 转换为string
- 消息队列长时间运行,出现“执行操作所需的资源不足。”
- 这个语句为什么只能执行2次?到第三次就死机
- 我的项目里要用到Excel组件,我该怎样调用Excel组件呢?
- windows程序调用webservice也会超时吗
- 多线程里面使用Collection的问题
- 为何带有Owner的窗体无法失去焦点?
- 大家用的C#是哪里来的?
- C#看继承关系,有没有像delphi那样,ctrl+左键就能看到的快捷键?
- windows 面板的问题怎么处理?用dataGridView可以吗?一个dataGridView 可以绑定多个dataTable吗?
{}