zoukankan      html  css  js  c++  java
  • Lucene.Net学习

        
              很早就知道Lucene.Net但一直都没时间认真实践一下.最近项目需要.所以考虑学习一下Lucene.Net引擎.终于做出了第一个Demo感觉挺实用的.还不错.代码贴上.各位博友可参考学习一下.


            protected void btnAddIndex_Click(object sender, EventArgs e)
            {
                writer = new IndexWriter(Server.MapPath("index"), new Lucene.Net.Analysis.SimpleAnalyzer(), false);
                IndexDirectory(writer, new FileInfo(Server.MapPath("doc")));
                writer.Close();
            }
            public void IndexDirectory(IndexWriter writer, FileInfo file)
            {
                if (System.IO.Directory.Exists(file.FullName))
                {
                    String[] files = System.IO.Directory.GetFileSystemEntries(file.FullName);
                    if (files != null)
                    {
                        for (int i = 0; i < files.Length; i++)
                        {
                            IndexDirectory(writer, new FileInfo(files[i])); 
                        }
                    }
                }
                else if (file.Extension == ".txt" || file.Extension == ".htm" || file.Extension == ".html")
                {
                    IndexFile(file, writer);
                }
            }

            private void IndexFile(FileInfo file, IndexWriter writer)
            {
                try
                {
                    Document doc = new Document();
                    txtListIndex.Text = txtListIndex.Text + "\n文件路径:" + file.FullName;
                    doc.Add(Field.Keyword("filename", Path.GetFileName(file.FullName).Replace(file.Extension,"")));
                    //doc.Add(Field.Text("contents", new StreamReader(file.FullName, System.Text.Encoding.Default)));
                    doc.Add(Field.Text("contents", file.FullName));
                    writer.AddDocument(doc);
                }
                catch (FileNotFoundException fnfe)
                {
                    Response.Write(fnfe.Message);
                }
            }

            protected void Button1_Click(object sender, EventArgs e)
            {
                IndexSearcher searcher = new IndexSearcher(Server.MapPath("index"));

                Query query = QueryParser.Parse("Linux", "filename", new Lucene.Net.Analysis.WhitespaceAnalyzer());

                Hits hits = searcher.Search(query);

                if (hits.Length() > 0)
                {
                    for (int num = 0; num <= hits.Length() - 1; num++)
                    {
                        Document docNew = hits.Doc(num);
                        txtListIndex.Text = txtListIndex.Text + "\n" + docNew.Get("contents");
                    }
                }
            }

  • 相关阅读:
    KVM使用入门
    虚拟化技术之KVM
    MySQL初始化以及客户端工具的使用
    Python基础数据类型-字典(dict)
    Golang异常处理-panic与recover
    HTML&CSS基础-overflow
    MySQL数据类型以及基本使用详解
    HTML&CSS基础-display和visibility
    golang数据传输格式-序列化与反序列化
    Golang的文件处理方式-常见的读写姿势
  • 原文地址:https://www.cnblogs.com/witer666/p/1172597.html
Copyright © 2011-2022 走看看