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
分享到:
相关推荐
7. **内存和磁盘管理**:Lucene利用RAMDirectory和MMapDirectory等不同的目录实现来存储索引,平衡内存效率和磁盘空间使用。NIOFSDirectory利用Java NIO进行文件访问,提高性能。 8. **分布式搜索**:通过Solr或...
第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。 public void add(Query query, BooleanClause.Occur occur) BooleanClause用于表示布尔查询子句关系的类,包括: BooleanClause.Occur.MUST,...
《深入理解Lucene C#与.NET环境下的应用实践》 Lucene是一款强大的全文搜索引擎库,最初由Apache软件基金会开发,现已成为Apache Lucene项目的一部分。它提供了高效的索引和搜索功能,广泛应用于各类数据检索系统。...
5. **内存索引与磁盘索引**: `RAMDirectory` 用于内存中的索引,而 `FSDirectory` 则用于磁盘上的索引,两者可以根据需求灵活选择。 **Lucene 3.0 API 更新与改进** 1. **SegmentMerger 改进**: Lucene 3.0 中,`...
Lucene是Apache软件基金会的一个开放源代码项目,它是一个全文搜索引擎库,主要用Java编写,但也有其他语言的版本。Lucene提供了高级的文本分析、索引和搜索功能,是构建高效、可扩展的信息检索应用的基础。在Java的...
【Lucene 4.7.0 全套JAR包详解】 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“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
import org.apache.lucene.store.RAMDirectory; public class SimpleLuceneDemo { public static void main(String[] args) throws Exception { // 创建目录对象 Directory directory = new RAMDirectory(); /...
本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...
Lucene是一款强大的全文搜索引擎库,广泛应用于各种数据检索场景。在C#环境下,利用Lucene进行时间区间搜索是提高数据检索效率和精确度的重要手段。本篇将深入探讨如何在C#中实现Lucene的时间区间查询匹配,以及涉及...
在IT领域,搜索引擎技术是至关重要的,而Lucene作为一个开源全文搜索引擎库,广泛应用于各种文本检索系统中。本文将深入探讨Lucene示例中的BM25相似度计算,旨在帮助初学者理解如何利用Lucene 4.7.1版本构建索引、...
**Lucene 4.0.0 全文检索引擎工具包** Apache Lucene 是一个高度成熟、广泛使用的开源全文检索库,由Java编写。作为一款搜索引擎工具包,它提供了核心的索引和搜索功能,使得开发者能够快速地在应用程序中集成强大...
《Lucene in Action》是关于Apache Lucene的权威指南,这本书深入浅出地介绍了全文搜索引擎的构建和优化。Lucene是一个高性能、全文本搜索库,它允许开发人员在应用程序中轻松实现复杂的搜索功能。这本书主要面向...
赠送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...
7. **内存与磁盘管理**: Lucene.Net利用RAMDirectory和FSDirectory类分别处理内存和磁盘上的索引存储。这允许在内存中快速访问,同时将大部分数据保存在硬盘上,以节省内存。 8. **多线程支持**: Lucene.Net支持多...
"计算机专业外文翻译(lucene相关)" 本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对...
Directory则用来保存索引,可以选择不同的实现,如内存中的RAMDirectory或磁盘上的FSDirectory。IndexWriter是构建和管理索引的关键对象。 接下来,你需要创建一个索引器类,该类使用Spring的ApplicationContext...
《Lucene in Action 第二版》是一本深入探讨Apache Lucene全文检索库的专业书籍,它在Java开发领域具有很高的权威性。这本书详细介绍了如何利用Lucene进行高效的文本搜索和索引构建,是Java开发者和信息检索爱好者的...
1. **初始化Directory**:选择存储索引的目录,如FSDirectory(文件系统)、RAMDirectory(内存)等。 2. **创建IndexWriter**:配置IndexWriter实例,指定Directory、Analyzer和其他参数。 3. **创建文档**:定义...