学习笔记17 用盘古分词器+window service+lucene.net 使用注意事项

将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 也是必须的文件

这样成成功的启动了项目;

将文件放置在该放置的位置 这样就启动成功了.

就是这样了.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章