[c#]Lucene.Net 3.0.3.0 示例代码

using Lucene.Net.Index;
using Lucene.Net.Store;
using Lucene.Net.Analysis;
using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
using Lucene.Net.Search;
using Lucene.Net.QueryParsers;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Lucene.Net_Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
            //IndexWriter writer = new IndexWriter("IndexDirectory", analyzer, true);
            DirectoryInfo dirInfo = System.IO.Directory.CreateDirectory("IndexDirectory");
            Lucene.Net.Store.Directory directory = Lucene.Net.Store.FSDirectory.Open(dirInfo);
            IndexWriter writer = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.LIMITED);
            AddDocument(writer, "SQL Server 2008 的发布", "SQL Server 2008 的新特性");
            AddDocument(writer, "ASP.Net MVC框架配置与分析", "而今,微软推出了新的MVC开发框架,也就是Microsoft ASP.NET 3.5 Extensions");
            writer.Optimize();
            writer.Dispose();
        }
        static void AddDocument(IndexWriter writer, string title, string content)
        {
            Document document = new Document();
            document.Add(new Field("title", title, Field.Store.YES, Field.Index.ANALYZED));
            document.Add(new Field("content", content, Field.Store.YES, Field.Index.ANALYZED));
            writer.AddDocument(document);
            Document doc = new Document();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
            DirectoryInfo dirInfo = System.IO.Directory.CreateDirectory("IndexDirectory");
            Lucene.Net.Store.Directory directory = Lucene.Net.Store.FSDirectory.Open(dirInfo);
            IndexSearcher searcher = new IndexSearcher(directory, true);
            // IndexSearcher searcher = new IndexSearcher("IndexDirectory");
            MultiFieldQueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, new string[] { "title", "content" }, analyzer);
            Query query = parser.Parse(textBox1.Text);
            TopDocs docs = searcher.Search(query, (Filter)null, 10);

            if (docs == null || docs.TotalHits == 0)
            {
                Console.WriteLine("没有结果!");
            }
            else
            {
                int counter = 1;
                foreach (ScoreDoc sd in docs.ScoreDocs)
                {
                    try
                    {
                        Document doc = searcher.Doc(sd.Doc);
                        string title = doc.Get("title");
                        string content = doc.Get("content");
                        string job = doc.Get("job");
                        string createdate = doc.Get("createdate");
                        string result = string.Format("这是第{0}个搜索结果,标题为{1},内容{2}", counter, title, content);
                        Console.WriteLine(result);
                    }
                    catch (Exception ex)
                    {


                    }
                    counter++;
                }
            }
            /** Hits hits = searcher.Search(query);

             for (int i = 0; i < hits.Length(); i++)
             {
                 Document doc = hits.Doc(i);
                 Console.WriteLine(string.Format("title:{0} content:{1}", doc.Get("title"), doc.Get("content")));
             }
             searcher.Close();

             Console.ReadKey();
             * **/
        }

    }
}

  据说贴完代码不解释死全家,好吧。Lucene.Net  3.0.3.0 基于某个2.0版本的教程尝试。导入NET40/Lucene.Net.dll , 只有两个按钮,一个加一个查。SoEasy。

posted on 2017-07-04 10:26  ee赵煜  阅读(286)  评论(0编辑  收藏  举报

导航