运行lucene所需要的JAR包
lucene-core-3.6.0.jar(核心包)
lucene-analyzers-3.6.0.jar(分词器)
lucene-highlighter-3.6.0.jar(高亮)
lucene-memory-3.6.0.jar(高亮)
public class HelloWord {
public static void createIndexFile() {
IndexWriter indexWriter=null;
try {
// 需要的分词器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
// 创建的是哪个版本的IndexWriterConfig
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(
Version.LUCENE_36, analyzer);
// 创建系统文件----- ./ 当前路径下的
Directory directory = new SimpleFSDirectory(new File("./indexDir/"));
indexWriter = new IndexWriter(directory,indexWriterConfig);
//获取实体对象
Article article=new Article(11,"最XX的城市","XX");
//indexWriter添加索引
Document doc=new Document();
//文本中添加内容 标题 内容
/*doc.add(new Field("title","中国的首都在哪里",Store.YES,Index.ANALYZED));
doc.add(new Field("content","中国的首都在北京",Store.YES,Index.ANALYZED));*/
doc.add(new Field("id",article.getId().toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("title",article.getTitle().toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("content",article.getContent().toString(),Store.YES,Index.ANALYZED));
//添加到索引中去
indexWriter.addDocument(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(indexWriter!=null){
try {
indexWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//如果查询是需要用到解析器,那解析器必须和创建时的解析器相同
public static void searchIndexFileResult() throws IOException {
List<Article> articles=new ArrayList<Article>();
//得到索引的目录
Directory directory = new SimpleFSDirectory(new File("./indexDir/"));
//根据目录打开一个indexReader
IndexReader indexReader=IndexReader.open(directory);
//System.out.println(indexReader.maxDoc());
//获取最小值的document对象
//Document doc=indexReader.document(0);
//获取最大值的document对象
//Document doc=indexReader.document(indexReader.maxDoc()-1);
//document对象的get(字段名称)方法获取字段的值
/*System.out.println(doc.get("id"));
System.out.println(doc.get("title"));
System.out.println(doc.get("content"));*/
int n=indexReader.maxDoc();
for(int i=0;i<n;i++){
Document doc=indexReader.document(i);
Article article=new Article();
if(doc.get("id")==null){
System.out.println("id为空");
}else{
article.setId(Integer.parseInt(doc.get("id")));
article.setTitle(doc.get("title"));
article.setContent(doc.get("content"));
articles.add(article);
}
}
for(Article article:articles){
System.out.println(article.toString());
}
}
public static void main(String[] args) throws IOException {
// 建立要索引的文件
// createIndexFile();
// 从索引文件中查询数据
searchIndexFileResult();
// 获得结果,然后交由相关应用程序处理
}
}
分享到:
相关推荐
这里的“lucene3.6.jar”是一个包含了Lucene 3.6版本核心功能的Java类库,它是实现全文检索的基础。 Lucene的核心特性包括索引构建、查询解析、搜索执行以及结果排序等。索引构建允许开发者将大量文本数据转换为...
1. 文档创建:在Lucene中,所有的数据都被转化为文档对象,每个文档可以包含多个字段,如标题、正文等。每个字段都有自己的特性,比如是否被索引、是否可搜索、是否存储等。 2. 分析器:在将文本数据添加到索引之前...
《Lucene 3.6 入门实例教程》是一份专为初学者设计的指南,旨在帮助用户快速掌握Apache Lucene 3.6版本的基本概念和应用。Lucene是一个高性能、全文检索库,广泛用于构建搜索功能强大的应用程序。这份教程通过完整的...
### 第一章 Lucene 基础 #### 1.1 索引部分的核心类 - `Directory`: 用于存储索引数据的抽象接口,例如FSDirectory(文件系统目录)和RAMDirectory(内存目录)。 - `IndexWriter`: 负责创建、修改和删除索引的主要...
1. 初始化Directory,如使用FSDirectory打开一个本地文件夹作为索引存储位置。 2. 创建Analyzer,如使用StandardAnalyzer处理文本。 3. 创建IndexWriter实例并设置相关参数。 4. 创建Document对象,添加Field,然后...
在这个入门案例中,我们将深入理解如何使用 Lucene 3.6 版本来构建基本的文本搜索引擎。 首先,我们需要了解 Lucene 的核心概念: 1. **索引(Indexing)**:Lucene 的工作始于创建索引,将文档内容转化为可搜索的...
在网上找了实例,但是发现不能使用,只能简历索引。...lucene3.6版本,能够建立索引,能搜索。inderwriter,indexsearch. 其中包C下的helloword实例能用,其余的全是网上不能用的。直接下载 可以运行
1. 下载并导入修复后的IKAnalyzer源码到项目中。 2. 配置IKAnalyzer,指定自定义的停用词文件路径。 3. 创建Analyzer实例,使用修复后的IKAnalyzer进行分词。 4. 对待处理的中文文本进行分词操作。 5. 检查分词结果...
Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发,广泛应用于各种搜索引擎的构建。在 Lucene 3.6 版本中,它提供了强大的文本搜索功能,适用于Java开发人员。这个版本相对稳定,对于初学者来说是一个很好...
lucene3.6 模仿百度自动补全(lucene3.6 模仿百度自动补全(lucene3.6 模仿百度自动补全(lucene3.6 模仿百度自动补全(lucene3.6 模仿百度自动补全(lucene3.6 模仿百度自动补全(lucene3.6 模仿百度自动补全
1. **Term 查询**:最基础的查询类型,通过指定一个词来查找包含这个词的文档。 2. **Boolean 查询**:结合多个 Term 查询,使用 AND、OR、NOT 等布尔运算符来构造复杂的查询表达式。 3. **Phrase 查询**:用于...
lucene-highlighter.jar lucene-highlighter.jar
3. **Lucene 5.x、6.x、7.x的关键特性**: - Lucene 5.x引入了新的DocValues格式,提高了索引的压缩率和查询速度。同时,支持更强大的多字段搜索和聚合功能。 - Lucene 6.x进一步优化了内存使用,增强了查询性能,...
1. 压缩索引:使用Lucene的压缩选项,可以减少索引占用的磁盘空间。 2. 分片与分布式搜索:在大型系统中,通过分片技术将索引分散到多台机器上,提升搜索性能。 3. 缓存优化:合理利用查询结果缓存和字段数据缓存...
文本分析是Lucene处理文本数据的第一步,它涉及到文本的分词、去除停用词、词形还原等一系列操作,目的是将复杂的自然语言转化为搜索引擎可以理解和处理的形式。 在"lucene-analysis.jar"中,我们可以找到多种预定...
Apache Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎应用程序。这个名为"apache-lucene-analyzers.jar"的文件是Lucene项目的一部分,主要包含了各种分析器(analyzers)的实现,它们在处理文本数据时起...
1. 文档(Document):代表要索引的信息,可以包含多个字段(Field)。 2. 字段(Field):文档中的具体信息,如标题、内容、作者等,每个字段都有自己的属性,如是否可搜索、是否存储等。 3. 索引(Index):将文档...
1. **创建索引**:首先,我们需要创建一个索引writer,然后遍历要索引的文档,将每个文档的字段添加到writer中。索引完成后,记得关闭writer。 2. **分析文本**:在添加文档时,使用合适的分析器处理文本,确保每个...
标题 "第一个lucene的简单实例" 提到的是关于Apache Lucene的初步应用,这是一个全文搜索引擎库,常用于Java开发中。Lucene提供了高效的文本搜索功能,使得开发者能够快速地在大量数据中查找相关信息。 描述中的 ...