将lucene.net用 window service 定时的 生成的索引文件 以便在使用中不浪费建立索引的时间
在分词方面我选择的是盘古的分词 听说是最好的.
当然在这 我使用的是控制台程序,如果想换成window service 的话 可以将main方法中的代码放到window service 中的onstart方法中就行了
如果不知道创建服务 和安装服务的朋友可以查看我上一篇文章.window servicve 的相关内容
具体的使用情况是:
//建立索引字段using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OracleClient;
using System.Data;
using WindowsService2;
using Lucene.Net;
using Lucene.Net.Analysis.PanGu;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.Search;
using PanGu;
using PanGu.HighLight;
using PanGu.Dict;
using Lucene.Net.Analysis;
using Lucene.Net.Analysis.Standard;
using Lucene.Net.QueryParsers;
using Lucene.Net.Store;
using Lucene.Net.Util;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
PanGuAnalyzer analyzer = null;
IndexWriter Writer = null;
try
{
//analyzer = new PanGuAnalyzer();
//Writer = new IndexWriter(@"D:\MyIndex", new PanGuAnalyzer(), true);//实例化一个写入器(盘古分词器)
//Writer = new IndexWriter(Indexpath, new WhitespaceAnalyzer(), true);//实例化一个写入器(lucene.net自带分词)
//Document dm = new Document();//实例化文档对象
string sql = "SELECT * FROM V_PROCUREMENT";
DataSet ds = DBserver.Query(sql);
foreach (DataRowView drv in ds.Tables[0].DefaultView)
{
Document Doc = new Document();
Doc.Add(new Field("title", drv["title"].ToString(), Field.Store.YES, Field.Index.TOKENIZED));
sDoc.Add(new Field("content", drv["content"].ToString(), Field.Store.YES, Field.Index.TOKENIZED));
Doc.Add(new Field("name", drv["name"].ToString(), Field.Store.YES, Field.Index.TOKENIZED));
Doc.Add(new Field("corporation_cname", drv["corporation_cname"].ToString(), Field.Store.YES, Field.Index.TOKENIZED));
Writer.AddDocument(Doc);
}
Writer.Optimize();
Writer.Close(); //创建索引结束
}
catch
{
throw;
}
}
}
}
看起来以前都是如此的简单和明了 结果很好,建立服务.....直到:启动服务的时候出现了问题.服务器启动了又停止了....什么什么的,这说明什么呢?
说明写服务代码本身就有问题所以导致服务无法启动.
那是什么问题呢?
通过把代码复制到控制台程序中运行 才发现:错误是:
未能找到路径“C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\windows Sevcer\ConsoleApplication1\bin\Dictionaries\Dict.Dct”的一部分。 说明什么呢? 我们缺少一个dict.dct的文件 这个文件时盘古内置的文件.
还有一个文件:pangu.xml 也是必须的文件
这样成成功的启动了项目;
将文件放置在该放置的位置 这样就启动成功了.
就是这样了.