自己写了个小例子
package com.lucene.test;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
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.Store;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.ParseException;
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.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
public class IndexWriterTest {
public static void main(String[] args) {
try {
File file = new File("d:/index");
IndexWriter writer = new IndexWriter(file, new StandardAnalyzer(), MaxFieldLength.UNLIMITED);
Document doc = new Document();//测试 lucene能否实现不同属性检索
Field field = new Field("title", "测试lucene能否实现不同属性检索", Store.YES, Field.Index.ANALYZED, Field.TermVector.NO);
doc.add(field);
writer.addDocument(doc);
doc = new Document();
field = new Field("descript", "描述内容", Store.YES, Field.Index.ANALYZED, Field.TermVector.NO);
doc.add(field);
writer.addDocument(doc);
writer.optimize();
writer.close();
//检索
IndexSearcher search = new IndexSearcher(FSDirectory.getDirectory("d:/index"));
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser("descript", analyzer);
Query query = parser.parse("描述");
// BooleanQuery q = new BooleanQuery();
// RangeQuery range = new RangeQuery(new Term("time", ""), new Term("time",""), false);
TopDocs docs = search.search(query, 10);
System.out.println("找到记录共"+docs.totalHits+"条。");
ScoreDoc[] d = docs.scoreDocs;
for(ScoreDoc s: d){
int id = s.doc;
Document dd = search.doc(id);
System.out.println(dd.get("descript"));
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
在使用 Lucene 之前,首先需要将其添加到项目依赖中。如果你使用的是 Maven,可以在 pom.xml 文件中添加对应的 Lucene 依赖。对于其他构建工具,如 Gradle 或 Ivy,也有相应的配置方式。确保选择与项目所用 Java ...
### Lucene 使用正则表达式 #### 知识点概览 1. **Lucene简介** 2. **正则表达式(regex)在Lucene中的应用** 3. **regexQuery详解** 4. **示例代码解析** 5. **索引创建与查询流程** 6. **正则表达式的语法** #### ...
### Lucene 使用教程 #### 一、Lucene简介与安装 **1.1 Lucene简介** Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成,它为开发者提供了构建搜索应用程序的基础工具。Lucene的主要特点包括: - **...
在4.7.1版本中,Lucene已经相当成熟,支持多种索引优化策略和查询方式。 索引构建是Lucene的核心部分。在这个示例中,开发者会展示如何使用Lucene将文本数据转化为高效的倒排索引结构。这个过程包括分析文本、创建...
- **使用方式**:Lucene通常作为库直接集成到应用程序中,而Solr则作为一个独立的服务运行。 - **功能丰富程度**:Solr相对于Lucene来说,提供了更多高级功能,如分面搜索、自动完成等。 - **集群支持**:Solr支持...
在使用2012版时异常:ClassNotFoundException: org.apache.lucene.analysis.tokenattributes.CharTermAttribute 庖丁分词 使用 paoding-analysis-2.0.4-beta.zip 版时异常 Exception in thread "main" java.lang....
Lucene应用是指使用Lucene搜索引擎库构建搜索应用程序的过程。Lucene应用程序可以用于各种领域,包括文本搜索、图片搜索和视频搜索等。 在上面的代码中,我们使用了Lucene搜索引擎库构建了一个文本搜索应用程序。该...
**使用Lucene全文检索数据库** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它是Java编写的,能够帮助开发者在各种应用程序中实现强大的全文检索功能。在这个项目中,我们将探讨如何利用Lucene ...
3. **内存索引和磁盘索引**:Lucene 可以在内存或磁盘上存储索引,根据应用场景选择合适的存储方式。 4. **分布式搜索**:通过 Solr 或 Elasticsearch 等扩展,可以实现分布式搜索,处理大规模数据。 5. **文档...
- **Codecs模块**:提供了不同的编码方式,用于存储和检索索引,如`lucene-codecs-4.7.0.jar`。 - **Contrib模块**:包含社区贡献的扩展功能,可能包括特殊分词器、搜索建议等,如`lucene-join-4.7.0.jar`、`lucene...
特别提到了"尚学堂科技_张志宇_lucene.ppt",这可能是一个由尚学堂科技的张志宇制作的Lucene讲解PPT,通常这样的PPT会以简洁明了的方式介绍Lucene的基本概念、使用方法和实战技巧。 **Lucene核心知识点** Apache ...
为了更好地使用Lucene,需要了解其核心API和常用代码。本文将对Lucene部分常用代码进行详细解释,包括多字段搜索、多条件搜索、过滤等。 多字段搜索 在Lucene中,我们可以使用MultifieldQueryParser来指定多个搜索...
Apache Lucene 是一个开源的全文检索库,它提供了一种高效、可扩展的方式来构建全文搜索引擎。在Java开发中,Lucene被广泛用于实现文件的全文检索功能,包括对doc、docx、pdf、txt等常见格式文档的文本内容检索。在...
4. **codecs jar包**:定义了索引的编码和解码方式,如`lucene-codecs-4.9.0.jar`,不同版本的编码格式可能会影响索引的存储效率和检索性能。 5. **contrib jar包**:这些是社区贡献的扩展功能,例如`lucene-memory...
2. **分词(Tokenization)**: Lucene使用Analyzer对输入文本进行分词,将长句子拆分成独立的单词或短语,这是建立索引的基础。 3. **文档(Document)**: 在Lucene中,每个要搜索的信息被视为一个Document,包含多...
Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单的API,使得开发者能够方便地在应用中实现全文检索功能。本篇文章将围绕Lucene的核心概念...