`

Lucene(NIOFSDirectory、RAMDirectory)

阅读更多
import java.io.File; 

import org.apache.lucene.analysis.standard.StandardAnalyzer; 
import org.apache.lucene.document.Document; 
import org.apache.lucene.document.Field; 
import org.apache.lucene.document.Field.Index; 
import org.apache.lucene.document.Field.Store; 
import org.apache.lucene.index.IndexReader; 
import org.apache.lucene.index.IndexWriter; 
import org.apache.lucene.index.IndexWriter.MaxFieldLength; 
import org.apache.lucene.queryParser.QueryParser; 
import org.apache.lucene.search.IndexSearcher; 
import org.apache.lucene.search.Query; 
import org.apache.lucene.search.ScoreDoc; 
import org.apache.lucene.search.TopDocs; 
import org.apache.lucene.store.NIOFSDirectory; 
import org.apache.lucene.store.RAMDirectory; 
import org.apache.lucene.util.Version; 

public class TestLucen { 

public static final String path = "E:\\workspaces\\lucene\\index"; 

public static void main(String[] args) throws Exception { 
writeIndex(); 
readIndex("text", "area"); 
} 

public static void writeIndex() throws Exception { 
// 硬盘索引 
IndexWriter writer = new IndexWriter( 
new NIOFSDirectory(new File(path)), new StandardAnalyzer( 
Version.LUCENE_30), MaxFieldLength.LIMITED); 
// Ram索引 
RAMDirectory ram = new RAMDirectory(); 
IndexWriter ramwriter = new IndexWriter(ram, new StandardAnalyzer( 
Version.LUCENE_30), MaxFieldLength.LIMITED); 
Document doc = new Document(); 
Document doc1 = new Document(); 

doc.add(new Field("text", "It is a text area", Store.YES, 
Index.ANALYZED_NO_NORMS)); 
doc.add(new Field("info", "It is a Infomation  area", Store.YES, 
Index.ANALYZED_NO_NORMS)); 
writer.addDocument(doc); 

doc1.add(new Field("text", "it is another area", Store.YES, 
Index.ANALYZED)); 
ramwriter.addDocument(doc1); 
ramwriter.optimize(); 
ramwriter.close(); 
// 将Ram索引合并到硬盘索引上,必须先调用ram的close方法 
writer.addIndexes(IndexReader.open(ram)); 
writer.optimize(); 
writer.close(); 
} 

public static void readIndex(String field, String keyword) throws Exception { 
IndexSearcher searcher = new IndexSearcher(new NIOFSDirectory(new File( 
path))); 
Query query = new QueryParser(Version.LUCENE_30, field, 
new StandardAnalyzer(Version.LUCENE_30)).parse(keyword); 
TopDocs docs = searcher.search(query, 10); 
System.out.println("查找到" + docs.totalHits + "个\n对应的text为:"); 
ScoreDoc[] doc = docs.scoreDocs; 
for (ScoreDoc d : doc) { 
Document docu = searcher.doc(d.doc); 
System.out.println(docu.get(field)); 
} 
} 
} 


执行结果:



查找到2个

对应的text为:

It is a text area

it is another area
分享到:
评论
2 楼 胡小米 2012-02-24  
liuInsect 写道
你这里的内存索引根本就没用嘛...  都是把索引建立在了硬盘上  然后又去去硬盘上的哪个文件啊...... 


这里只是说可以采用RAM索引方式,效率快些,后面只是说可以将Ram索引合并到硬盘索引上
1 楼 liuInsect 2012-02-13  
你这里的内存索引根本就没用嘛...  都是把索引建立在了硬盘上  然后又去去硬盘上的哪个文件啊...... 

相关推荐

    lucene,lucene教程,lucene讲解

    第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。 public void add(Query query, BooleanClause.Occur occur) BooleanClause用于表示布尔查询子句关系的类,包括: BooleanClause.Occur.MUST,...

    Apache Lucene-4.10.3源码

    7. **内存和磁盘管理**:Lucene利用RAMDirectory和MMapDirectory等不同的目录实现来存储索引,平衡内存效率和磁盘空间使用。NIOFSDirectory利用Java NIO进行文件访问,提高性能。 8. **分布式搜索**:通过Solr或...

    lucene 2.0 api以及lucene 3.0 api

    5. **内存索引与磁盘索引**: `RAMDirectory` 用于内存中的索引,而 `FSDirectory` 则用于磁盘上的索引,两者可以根据需求灵活选择。 **Lucene 3.0 API 更新与改进** 1. **SegmentMerger 改进**: Lucene 3.0 中,`...

    lucene实例lucene实例

    《Lucene实战:深入解析与应用》 Lucene,作为Apache软件基金会的开源全文检索库,是Java领域中广泛使用的搜索引擎框架。它提供了强大的文本分析、索引和搜索功能,被许多大型项目采用,如Elasticsearch、Solr等。...

    lucene包,lucene实现核心代码

    Lucene是Apache软件基金会的一个开放源代码项目,它是一个全文搜索引擎库,主要用Java编写,但也有其他语言的版本。Lucene提供了高级的文本分析、索引和搜索功能,是构建高效、可扩展的信息检索应用的基础。在Java的...

    lucene-4.7.0全套jar包

    【Lucene 4.7.0 全套JAR包详解】 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“lucene-...

    Lucene索引器实例

    import org.apache.lucene.store.RAMDirectory; public class LuceneIndexExample { public static void main(String[] args) throws Exception { // 创建内存目录 Directory directory = new RAMDirectory(); ...

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    Lucene时间区间搜索

    Lucene是一款强大的全文搜索引擎库,广泛应用于各种数据检索场景。在C#环境下,利用Lucene进行时间区间搜索是提高数据检索效率和精确度的重要手段。本篇将深入探讨如何在C#中实现Lucene的时间区间查询匹配,以及涉及...

    lucene for java 简单demo

    import org.apache.lucene.store.RAMDirectory; public class SimpleLuceneDemo { public static void main(String[] args) throws Exception { // 创建目录对象 Directory directory = new RAMDirectory(); /...

    Lucene3.5源码jar包

    本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...

    lucene in action英文版 lucene 3.30包

    《Lucene in Action》是关于Apache Lucene的权威指南,这本书深入浅出地介绍了全文搜索引擎的构建和优化。Lucene是一个高性能、全文本搜索库,它允许开发人员在应用程序中轻松实现复杂的搜索功能。这本书主要面向...

    lucene-core-7.7.0-API文档-中文版.zip

    赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...

    lucene.net+完全入门教程

    7. **内存与磁盘管理**: Lucene.Net利用RAMDirectory和FSDirectory类分别处理内存和磁盘上的索引存储。这允许在内存中快速访问,同时将大部分数据保存在硬盘上,以节省内存。 8. **多线程支持**: Lucene.Net支持多...

    计算机专业外文翻译(lucene相关)

    "计算机专业外文翻译(lucene相关)" 本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对...

    spring-lucene简单项目

    Directory则用来保存索引,可以选择不同的实现,如内存中的RAMDirectory或磁盘上的FSDirectory。IndexWriter是构建和管理索引的关键对象。 接下来,你需要创建一个索引器类,该类使用Spring的ApplicationContext...

    lucene in action 2nd edition, lucene in action 第二版 PDF

    《Lucene in Action 第二版》是一本深入探讨Apache Lucene全文检索库的专业书籍,它在Java开发领域具有很高的权威性。这本书详细介绍了如何利用Lucene进行高效的文本搜索和索引构建,是Java开发者和信息检索爱好者的...

    Lucene 索引的简单使用

    1. **初始化Directory**:选择存储索引的目录,如FSDirectory(文件系统)、RAMDirectory(内存)等。 2. **创建IndexWriter**:配置IndexWriter实例,指定Directory、Analyzer和其他参数。 3. **创建文档**:定义...

    Annotated Lucene 中文版 Lucene源码剖析

    《Annotated Lucene 中文版 Lucene源码剖析》是一本深入探讨Apache Lucene的书籍,专注于源码解析,帮助读者理解这个强大的全文搜索引擎库的工作原理。Lucene是一款开源的Java库,它提供了高效的文本搜索功能,被...

    lucene所有的jar包

    《全面解析Lucene jar包:从基础到应用》 在信息技术高速发展的今天,搜索引擎已经成为我们获取信息不可或缺的工具。在Java领域,Lucene作为一个强大的全文搜索引擎库,深受开发者喜爱。本文将详细介绍“lucene所有...

Global site tag (gtag.js) - Google Analytics