• lucene学习之helloworld(简单实例)


    摘自:http://www.cnblogs.com/weekzero/archive/2008/05/29/1210068.html

    引子
    What’s Lucene

    Lucene
    是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能.

    Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能.

    不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,一个Library.你也可以把它理解为一个将索引,搜索功能封装的很好的一套简单易用的API.利用这套API你可以做很多有关搜索的事情,而且很方便.

    What Can Lucene Do

    Lucene可以对任何的数据做索引和搜索. Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用.也就是说不管是MS word, Html ,pdf还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用.你就可以用Lucene对它们进行索引以及搜索.

    以上详细的介绍在lucene中国中有详细的描述,我也在这里上传了一份,也可以点击下载
    下面贴一个简单的实例代码:

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Text;
    using System.IO;

    using Lucene.Net.Documents;
    using Lucene.Net.Index;
    using Lucene.Net.Search;
    using Lucene.Net.QueryParsers;
    using Lucene.Net.Analysis.Standard;

    public partial class _Default : System.Web.UI.Page 
    {

        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    if(!IsPostBack)
                TextBox3.Text 
    = Server.MapPath("doc");
        }

        
    #region 建立索引
        
    protected void Button2_Click(object sender, EventArgs e)
        {
            
    string INDEX_STORE_PATH = Server.MapPath("index");  //INDEX_STORE_PATH 为索引存储目录
            string INDEX_PATH = TextBox3.Text;  //INDEX_PATH 为搜索目录

            IndexWriter writer 
    = null;

            writer 
    = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true);

            IndexDirectory(writer, 
    new FileInfo(INDEX_PATH));
            writer.Optimize();
            writer.Close();

            TextBox1.Text 
    = "提示:索引完成\n";
        }



        
    public void IndexDirectory(IndexWriter writer, FileInfo file)
        {
            
    if (Directory.Exists(file.FullName))
            {
                String[] files 
    = 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")
            {
                IndexFile(file, writer);
            }
        }
        
    private void IndexFile(FileInfo file, IndexWriter writer)
        {
                    Document doc 
    = new Document();

                    doc.Add(
    new Field("filename", file.FullName, Field.Store.YES, Field.Index.UN_TOKENIZED));

                    doc.Add(
    new Field("contents"new StreamReader(file.FullName, System.Text.Encoding.Default)));

                    writer.AddDocument(doc);        
        }

        
    #endregion

        
    #region 搜索
        
    protected void Button1_Click(object sender, EventArgs e)
        {
            
    string INDEX_STORE_PATH = Server.MapPath("index");  //INDEX_STORE_PATH 为索引存储目录
            string KEYWORD = TextBox2.Text;    //搜索关键字
            IndexSearcher searcher;

            searcher 
    = new IndexSearcher(INDEX_STORE_PATH);

            QueryParser q 
    = new QueryParser("contents"new StandardAnalyzer());

            Query query 
    = q.Parse(KEYWORD);

            Hits hits 
    = searcher.Search(query);

            TextBox1.Text 
    = "搜索结果为 " + hits.Length()+ " 个\n";

                
    if (hits != null)
                {
                    
    for (int i = 0; i < hits.Length(); i++)
                    {
                        Document doc 
    = hits.Doc(i);
                        TextBox1.Text 
    = TextBox1.Text + "" + (i + 1+ "个搜索结果,文件路径为: " + doc.Get("filename"+ "\n";
                    }
                }

                searcher.Close();
        }

        
    #endregion

        
    }


    例子代码下载:点这里(vs.net2008)
    lucene.net的版本为2.0.0.4,可以在lucene的网站上下载得到:http://incubator.apache.org/lucene.net/
    截止到今天,lucene在java的版本是2.3,在.net的是2.0

    相关:

    Lucene.Net基本用法【摘抄】

    lecene.net实现pdf,doc,xls,ppt,htm,html等格式文件的检索

    利用Lucene 实现高级搜索

    lucene与sql server数据库实现索引的简单实例(vs.net2008)


  • 相关阅读:
    C#如何为程序打包发布应用(图解教程) (转)
    异步委托与多线程
    如何判断自己的WP7 SDK版本
    (转)c#实现WinRAR解压缩
    网页HTML代码大全
    byte[] ,image, bitmap之间的转换
    MS开发者应懂得知识
    StringFarmat控制字符串居中显示
    WP7模拟器的感应器和GPS模拟定位功能
    lucene.net搜索文档(pdf,doc,txt)内容
  • 原文地址:https://www.cnblogs.com/blsong/p/1630358.html
Copyright © 2020-2023  润新知