`

RAMDirectory中的内容转到FSDirectory

阅读更多

import java.io.IOException;

 

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.CorruptIndexException;

import org.apache.lucene.index.IndexWriter;

import org.apache.lucene.index.Term;

import org.apache.lucene.search.Hits;

import org.apache.lucene.search.IndexSearcher;

import org.apache.lucene.search.TermQuery;

import org.apache.lucene.store.Directory;

import org.apache.lucene.store.FSDirectory;

import org.apache.lucene.store.LockObtainFailedException;

import org.apache.lucene.store.RAMDirectory;

 

/**

 * @author Vincnet

 * @version 2.3

 * 

 */

public class Test {

public static void main(String[] args) throws CorruptIndexException,

LockObtainFailedException, IOException {

long data1 = System.currentTimeMillis();

/**

* 分别创建两个对象

* */

FSDirectory fsDir = FSDirectory.getDirectory("E://Lucene//Index2//");

RAMDirectory ramDir = new RAMDirectory();

IndexWriter ramwriter = new IndexWriter(ramDir, new StandardAnalyzer(),true);

IndexWriter fsdwriter = new IndexWriter(fsDir, new StandardAnalyzer(),true);

Document document = new Document();

/**

* Field(String name, String value, Field.Store store, Field.Index index)

         * Create a field by specifying its name, value and how it will be saved in the index.

*

*/

document.add(new Field("name","Vincnet",Store.YES,Index.TOKENIZED));

document.add(new Field("age","18",Store.YES,Index.UN_TOKENIZED));

document.add(new Field("note","this is a test data",Store.YES,Index.TOKENIZED));

ramwriter.addDocument(document);

fsdwriter.addDocument(document);

ramwriter.flush();

//将fsd里面的索引和ram的索引合并成同一个所以 关键一句 

fsdwriter.addIndexes(new Directory[]{ramDir});

ramwriter.close();

fsdwriter.flush();

fsdwriter.close();

IndexSearcher searcher = new IndexSearcher(ramDir);

Hits hits = searcher.search(new TermQuery(new Term("name","vincnet")));

for(int i = 0 ; i < hits.length() ; i++){

System.out.println(hits.length()+"   "+hits.doc(i).get("name"));

}

searcher.close();

System.out.println("运行时间 : "+(System.currentTimeMillis() - data1)+" ms");

}

}

分享到:
评论

相关推荐

    lucence 索引合并 汇总

    ### Lucene索引合并知识点...通过上述步骤,我们可以有效地将RAMDirectory中的索引合并到FSDirectory中,从而实现索引的高效管理和查询。此外,通过分批合并的方式,还可以更好地利用内存资源,提高系统的整体性能。

    用Lucene实现简单搜索引擎【文档+代码】

    接下来,我们创建一个Directory对象,它可以是内存中的RAMDirectory或磁盘上的FSDirectory,用于存储索引。然后,通过IndexWriter实例化,配置好Analyzer和Directory,就可以开始添加Document到索引中了。 Document...

    lucene入门小例子

    创建Directory,作为索引的存储位置,如内存目录RAMDirectory或磁盘上的FSDirectory。 2. 创建索引:创建IndexWriter对象,设置Analyzer和Directory,然后逐个添加Document。每个Document代表一个要索引的实体,...

    spring-lucene简单项目

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

    lucene简单例子

    2. 创建Directory对象,这将是存储索引的地方,可以是内存中的RAMDirectory或磁盘上的FSDirectory。 3. 创建Analyzer对象,根据需求选择合适的分词器。 4. 创建IndexWriter对象,设置Analyzer并打开Directory进行写...

    lucene 索引小示例

    3. **创建Directory**: Directory代表了存储索引的物理位置,如内存(RAMDirectory)或磁盘(FSDirectory)。 4. **创建IndexWriter**: IndexWriter是负责写入和更新索引的对象。设置好Analyzer和Directory后,就...

    lucene.net源代码

    1. 初始化Directory对象,这通常是内存中的RAMDirectory或硬盘上的FSDirectory。 2. 创建Analyzer实例,根据需求选择不同的Analyzer。 3. 创建IndexWriter,设置相应的参数,如写入模式、最大文档数等。 4. 创建...

    luceneInAction2nd源码

    Lucene提供了灵活的索引存储机制,支持多种存储方式,如RAMDirectory(内存)、FSDirectory(磁盘文件系统)等。不同的存储方式对性能有着不同的影响,选择合适的存储方式对于提高搜索效率至关重要。 **4. 查询解析...

    Lucene4.10.3索引+查询

    1. **初始化目录**:Lucene需要一个目录来存储索引,可以是内存中的RAMDirectory或磁盘上的FSDirectory。 2. **创建索引写入器(IndexWriter)**:使用IndexWriter实例,配置合适的Analyzer(如StandardAnalyzer)...

    全文检索保存在文件中的数据——简单实例

    Lucene支持多种存储机制,如RAMDirectory(内存中)和FSDirectory(文件系统中)。 4. **查询处理**:当用户输入查询时,Lucene会解析查询字符串,生成查询对象,并与索引进行匹配。 5. **搜索结果**:返回最相关...

    lucene 实现类似百度搜索

    - 创建 Directory 对象:作为索引的存储位置,可以选择 RAMDirectory(内存)或 FSDirectory(磁盘)。 - 创建 Document 对象:添加字段,设置字段类型。 - 添加文档:使用 `IndexWriter` 将文档写入索引。 - ...

    lucene全文索引

    - **Directory**: 存储索引的接口,实现包括内存中的RAMDirectory和硬盘上的FSDirectory。 - **Analyzer**: 处理文本分析的类,可以通过自定义Analyzer实现特定的语言处理规则。 - **Document**: 用于表示一个文档的...

    lucene基础学习.pdf

    Lucene支持多种类型的Directory,包括文件系统上的FSDirectory和内存中的RAMDirectory。FSDirectory通常用于持久化存储索引,而RAMDirectory则用于临时的索引存储,通常在应用重启后索引会丢失。 除此之外,文档还...

    lucene2.3.2api

    - **Directory**:提供索引存储接口,可以选择内存(RAMDirectory)或磁盘(FSDirectory)作为索引的存储位置。 - **Segment**:索引的基本单位,一个Segment代表了不可变的一组文档。 6. **优化与性能**: - **...

    Lucene3总体图_建索引_查询_数据库索引[参考].pdf

    4. 循环遍历文件,创建Document对象,将文件内容(如文件名、内容等)转化为Field并添加到Document中。 5. 使用IndexWriter的addDocument方法将Document写入索引。 6. 最后,关闭IndexWriter以保存索引并释放资源。 ...

    lucene.net搜索技术,附带学习资料

    另外就是可以用多线程来分别对不同的内容进行索引并保存到RAMDirectory里,然后再把所有的内存索引合并到FSDirectory里,甚至可以让多台服务器分别处理内容的各个部分,然后把索引结果放到一个队列里,再有一台机器...

    lucene2.9.1所有最新开发包及源码及文档

    ☆4) 域由若干词(关键字)(Term)组成:文件的属性的内容中某个字符串映射成一个词。 4. Lucene包结构 1) analysis模块:负责词法分析及语言处理而形成Term(词)。提供了一些内置的分析器:最常用的是...

    lucene.net+完全入门教程

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

    lucene2.9开发指南

    - **store**:管理索引的存储,如FSDirectory和RAMDirectory分别对应文件系统和内存中的存储。 - **document**:定义了文档和域的数据结构。 - **search**:实现索引的搜索,IndexSearcher和Query类是主要的搜索...

    lucene3.6的入门案例

    Directory 用于存储索引,常见的有 RAMDirectory(内存中)和 FSDirectory(文件系统中)。 2. **创建索引**: - 创建 Document 对象,添加字段,如 `doc.add(new Field("content", content, Field.Store.YES, ...

Global site tag (gtag.js) - Google Analytics