简介:
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实现全文检索功能
在Android平台上实现全文检索并高亮关键字,常常需要用到开源全文搜索引擎Lucene。Lucene是一个高性能、...在实际开发中,参考《android+lucene实现全文检索并高亮关键字》等相关资料,可以更好地理解和掌握这一技术。
本实例将介绍如何结合Paoding和Lucene来实现一个简单的全文检索系统,这在处理中文数据时尤其有效。 首先,让我们了解一下Paoding。Paoding是一款优秀的中文分词库,它针对中文的特点进行了优化,能有效地进行词语...
在Android平台上实现全文检索并高亮关键字是一项技术挑战,但通过集成Apache Lucene库,可以有效地解决这个问题。Apache Lucene是一个高性能、可扩展的信息检索库,它为开发人员提供了强大的文本搜索功能。以下是对...
mysql中一个表的大量数据
总的来说,Lucene.Net 在 .Net MVC4 上实现全文检索是一个涉及数据库交互、索引构建、查询处理和结果展示的综合过程。通过熟练掌握 Lucene.Net 的使用,可以为用户提供高效、准确的全文搜索体验。
基于Struts2的全文检索系统利用了Lucene的强大功能,实现了文件上传、下载和全文检索。系统通过建立和维护有效的索引,确保了高效、准确的搜索体验。开发者可以在此基础上进一步扩展,如增加多语言支持、优化查询...
通过将数据库记录映射为 Lucene 的 Document,可以在不离开数据库环境的情况下实现全文检索。例如,可以使用 JDBC 连接数据库,读取记录并转换为 Document,然后进行索引。 ### 4. 实例应用 在实际项目中,我们...
本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,Lucene 是一个高性能、全功能的文本分析库,主要用于信息检索。它提供了索引和搜索大量文本数据的能力,包括分词、分析、存储和搜索...
本文将基于一篇关于“基于Lucene的全文检索引擎研究与应用”的论文,深入探讨全文检索的基本原理、Lucene系统的结构特点以及其实现的应用案例。 #### 全文检索概述 全文检索是一种信息检索方式,它能够根据文档中...
Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询解析和结果排序等。它的设计...
- **倒排索引**:这是Lucene实现高效全文检索的基础。通过构建文档中词汇与文档ID的映射关系,能够在极短的时间内返回匹配文档列表。 - **分词器**:用于将文档中的文本切分成一系列单词或词条,便于后续的索引构建...
Lucene 广泛应用于网站搜索、文档检索、信息提取等领域,是Java开发人员实现全文搜索引擎的首选工具。 在Lucene中,全文检索的核心概念包括以下几点: 1. **索引构建**:Lucene首先需要对数据进行索引,将非结构化...
在这个基于Lucene的全文检索系统中,我们可以实现对本地文件的高效搜索,方便用户快速找到所需的文档。 **1. Lucene的基本概念** - **索引(Index)**:Lucene首先将文本数据转化为可搜索的结构——索引,类似于...
在本文中,我们将探讨如何使用Zend Framework的Lucene模块进行全文检索,特别是针对中文分词的处理。全文检索是提高网站或应用搜索功能的关键技术,它允许用户输入任意词汇,系统能够快速找到与之相关的内容。Zend ...
lucene实现文件检索Demo,