`

Lucene实现全文检索

    博客分类:
  • C#
 
阅读更多

简介:

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

      作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的核心。

      Lucene是一个高性能、可伸缩的信息搜索(IR)库。它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是 著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, License]。同样,Lucene是目前非常流行的、免费的Java信息搜索(IR)库。

 

下面是用C#语言实现Lucene-文本检索的类,直接调用即可实现创建索引和文本检索

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using Lucene.Net;
using Lucene.Net.Store;
using Lucene.Net.Index;
using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
using Lucene.Net.Search;

namespace LuceneDemo
{
    class Lucene
    {
        public bool  CreateIndexFile(ArrayList resourceList, string filePath)
        {
            try
            {
                //1、定义索引文件路径
                FSDirectory ramdir = FSDirectory.GetDirectory(filePath);
                IndexWriter ramwriter = new IndexWriter(ramdir, new StandardAnalyzer(), true,
                                                        IndexWriter.MaxFieldLength.UNLIMITED);

                Console.WriteLine("开始生成索引文件");

                //2、生索引文件);
                //其中LuceneResourceInfo 是要存储的对象
                foreach (LuceneResourceInfo lri in resourceList)
                {
                    Document document = new Document();
                    //***

                    //说明:这里的Name,Phone,Address 是要存储对象的字段在索引里的命名,检索时可以根据任何一个字段进行检索

                    //**
                    document.Add(new Field("Name", lri.name, Field.Store.YES, Field.Index.ANALYZED,
                                           Field.TermVector.YES));
                    document.Add(new Field("Phone", lri.phoneNo, Field.Store.YES, Field.Index.ANALYZED,
                                         Field.TermVector.YES));
                    document.Add(new Field("Address", lri.address, Field.Store.YES, Field.Index.ANALYZED,
                                         Field.TermVector.YES));
                    ramwriter.AddDocument(document);
                }
                ramwriter.Optimize();
                ramwriter.Close();

                Console.WriteLine("索引文件已生成");
                return true;
            }
            catch (Exception ex)
            {
              Console.WriteLine(ex);
              return false;
            }
        }


        //查询索引
        public List<LuceneResourceInfo> Qury(string resourceName, string filePath)
        {
            List<LuceneResourceInfo> luceneResourceInfos = new List<LuceneResourceInfo>();
            IndexSearcher searcher = new IndexSearcher(filePath);
            //根据Name字段来查询
            Query query = new TermQuery(new Term("Name", resourceName));//单个字节查询
            Hits hits = searcher.Search(query);

            for (int i = 0; i < hits.Length(); i++)
            {
                Document d = hits.Doc(i);
                string name = d.Get("Name");
                string phone = d.Get("Phone");
                string address = d.Get("Address");

                //存储的对象
                LuceneResourceInfo info = new LuceneResourceInfo();
                info.name = name;
                info.phoneNo = phone;
                info.address = address;
                luceneResourceInfos.Add(info);
            }
            return luceneResourceInfos;
        }
    }
}

注:附件中有项目源码

第二个demo中包含模糊搜索和条件搜索两种,第一个demo中只有条件搜索

 

 

分享到:
评论

相关推荐

    Lucene实现全文检索功能FileUtil类

    Lucene实现全文检索功能

    android+lucene实现全文检索并高亮关键字索引库

    在Android平台上实现全文检索并高亮关键字,常常需要用到开源全文搜索引擎Lucene。Lucene是一个高性能、...在实际开发中,参考《android+lucene实现全文检索并高亮关键字》等相关资料,可以更好地理解和掌握这一技术。

    paoding+lucene实现全文检索功能简单实例

    本实例将介绍如何结合Paoding和Lucene来实现一个简单的全文检索系统,这在处理中文数据时尤其有效。 首先,让我们了解一下Paoding。Paoding是一款优秀的中文分词库,它针对中文的特点进行了优化,能有效地进行词语...

    android+lucene实现全文检索并高亮关键字

    在Android平台上实现全文检索并高亮关键字是一项技术挑战,但通过集成Apache Lucene库,可以有效地解决这个问题。Apache Lucene是一个高性能、可扩展的信息检索库,它为开发人员提供了强大的文本搜索功能。以下是对...

    使用Lucene实现全文检索的前提准备

    mysql中一个表的大量数据

    Lucene.Net 实现全文检索

    总的来说,Lucene.Net 在 .Net MVC4 上实现全文检索是一个涉及数据库交互、索引构建、查询处理和结果展示的综合过程。通过熟练掌握 Lucene.Net 的使用,可以为用户提供高效、准确的全文搜索体验。

    基于lucene的全文检索系统

    基于Struts2的全文检索系统利用了Lucene的强大功能,实现了文件上传、下载和全文检索。系统通过建立和维护有效的索引,确保了高效、准确的搜索体验。开发者可以在此基础上进一步扩展,如增加多语言支持、优化查询...

    Lucene4 全文检索

    通过将数据库记录映射为 Lucene 的 Document,可以在不离开数据库环境的情况下实现全文检索。例如,可以使用 JDBC 连接数据库,读取记录并转换为 Document,然后进行索引。 ### 4. 实例应用 在实际项目中,我们...

    使用compass+lucene实现简单的全文检索功能

    本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,Lucene 是一个高性能、全功能的文本分析库,主要用于信息检索。它提供了索引和搜索大量文本数据的能力,包括分词、分析、存储和搜索...

    基于Lucene的全文检索引擎研究与应用.pdf

    本文将基于一篇关于“基于Lucene的全文检索引擎研究与应用”的论文,深入探讨全文检索的基本原理、Lucene系统的结构特点以及其实现的应用案例。 #### 全文检索概述 全文检索是一种信息检索方式,它能够根据文档中...

    Lucene全文检索引擎

    Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询解析和结果排序等。它的设计...

    基于Lucene的全文检索系统研究与开发

    - **倒排索引**:这是Lucene实现高效全文检索的基础。通过构建文档中词汇与文档ID的映射关系,能够在极短的时间内返回匹配文档列表。 - **分词器**:用于将文档中的文本切分成一系列单词或词条,便于后续的索引构建...

    lucene 全文检索

    Lucene 广泛应用于网站搜索、文档检索、信息提取等领域,是Java开发人员实现全文搜索引擎的首选工具。 在Lucene中,全文检索的核心概念包括以下几点: 1. **索引构建**:Lucene首先需要对数据进行索引,将非结构化...

    基于Lucene的全文检索系统

    在这个基于Lucene的全文检索系统中,我们可以实现对本地文件的高效搜索,方便用户快速找到所需的文档。 **1. Lucene的基本概念** - **索引(Index)**:Lucene首先将文本数据转化为可搜索的结构——索引,类似于...

    使用zend Framework的lucene进行全文检索

    在本文中,我们将探讨如何使用Zend Framework的Lucene模块进行全文检索,特别是针对中文分词的处理。全文检索是提高网站或应用搜索功能的关键技术,它允许用户输入任意词汇,系统能够快速找到与之相关的内容。Zend ...

    lucene实现文件检索Demo

    lucene实现文件检索Demo,

Global site tag (gtag.js) - Google Analytics