import javax.management.Query;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.TopDocCollector;
/*
* 学习笔记之创建Index
*
* Lucene 版本 2.4.0
*/
public class LuceneJE1 {
private String path = "./index";
public void createIndex() throws Exception {
// 相当于打开了一个数据库的连接准备写入数据
// 注意:如果第三个参数为false并且path没有索引文件
// 就会抛出一个IOException
IndexWriter writer = new IndexWriter(path, new StandardAnalyzer(),
true, MaxFieldLength.UNLIMITED);
// 相当于数据库里行的概念,这里创建了3行数据
Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
// Field相当于数据库中列的概念,这里给一行的数据赋值
doc1.add(new Field("id", "1", Field.Store.YES, Field.Index.ANALYZED));
doc1.add(new Field("name", "cobain", Field.Store.YES,
Field.Index.ANALYZED));
doc1.add(new Field("content", "hello", Field.Store.YES,
Field.Index.ANALYZED));
doc2.add(new Field("id", "2", Field.Store.YES, Field.Index.ANALYZED));
doc2.add(new Field("name", "rose", Field.Store.YES,
Field.Index.ANALYZED));
doc2.add(new Field("content", "hi", Field.Store.YES,
Field.Index.ANALYZED));
doc3.add(new Field("id", "3", Field.Store.YES, Field.Index.ANALYZED));
doc3.add(new Field("name", "mike", Field.Store.YES,
Field.Index.ANALYZED));
doc3.add(new Field("content", "how are you", Field.Store.YES,
Field.Index.ANALYZED));
// 相当于把数据写入数据库
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
// 对写入的数据进行优化,比如压缩Document的索引编号
// 不要在服务器繁忙时对海量数据进行优化
// 最好在服务器空闲或负载小的时候进行
writer.optimize();
// 相当与关闭数据库连接
writer.close();
}
/*
* 这里把刚才建立的数据都查出来
*/
public void search() throws Exception {
Searcher searcher = new IndexSearcher(path);
MatchAllDocsQuery query = new MatchAllDocsQuery();
TopDocCollector results = new TopDocCollector(10);
searcher.search(query, results);
ScoreDoc[] docs = results.topDocs().scoreDocs;
for (int i = 0; i < docs.length; i++) {
System.out.println("Document id:" + docs[i].doc);
System.out.println("Document score:" + docs[i].score);
System.out.println("Document:" + searcher.doc(i));
}
}
public static void main(String[] args) throws Exception {
LuceneJE1 je1 = new LuceneJE1();
je1.createIndex();
je1.search();
}
}
分享到:
相关推荐
**Lucene 学习笔记 1** Lucene 是一个全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够在其应用程序中集成高级的搜索功能。本篇学习笔记将深入探讨 Lucene 的...
标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...
【Lucene学习笔记】 Lucene 是一款开源的全文检索框架,由Apache软件基金会维护,它提供了高效的、可扩展的搜索引擎功能。不同于一个完整的应用程序,Lucene 提供的是一个基础组件,开发者可以将其集成到自己的应用...
**Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...
本文将详细讲解Lucene 2.9.1版本的核心概念、架构以及索引创建与搜索的流程。 一、Lucene 2.9.1环境搭建 在开始使用Lucene之前,首要任务是搭建开发环境。这包括在项目classpath中添加核心库文件——`lucene-core-...
《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...
《Lucene笔记共38页.pdf》压缩包包含了一份详尽的Lucene学习资料,这份笔记深入浅出地探讨了Apache Lucene这个全文搜索引擎库。Lucene是Java开发的开源库,广泛应用于信息检索和大数据分析领域,为开发者提供了强大...
1. **创建索引(Creating an Index)**: 首先,读取数据源,对每个文档进行分词,将这些分词结果作为术语存储在倒排索引(Inverted Index)中。 2. **搜索(Searching)**: 用户输入查询字符串,Lucene通过分析查询...
1. **索引(Index)**:Lucene的核心功能之一是构建索引,将文本数据转化为可搜索的结构。索引是一个倒排索引,其中每个词项都有一个指向包含该词项的文档列表的指针,这种设计极大地提高了搜索速度。 2. **分析器...
在深入学习Lucene的过程中,理解其基本原理和使用方法至关重要。通过对不同版本文档的阅读和比较,可以更好地掌握Lucene的发展历程和技术改进,从而在实际项目中灵活运用。对于想要进一步提升搜索技术能力的开发者,...
2. **反向索引表(Inverted Index)**:对于每个字典中的词汇,反向索引表记录了这个词出现在哪些文档中,以及在文档中的位置信息。 **索引创建过程**: 1. **分词(Tokenization)**:将源文档分解成独立的词语,...
1. **索引构建**:Lucene通过分词器(Tokenizer)将文本分解为独立的词语,然后创建倒排索引(Inverted Index),使得能快速定位到包含特定关键词的文档。 2. **分词与分析**:Lucene内置了多种分词器和分析器,如...
ElasticSearch学习笔记 ElasticSearch是基于Apache Lucene的搜索和数据分析引擎,提供了RESTful API用于数据的索引、搜索和分析。本笔记将对ElasticSearch的基本概念、架构、应用场景和实现细节进行详细介绍。 一...
**Elasticsearch实战学习笔记** Elasticsearch是一个开源的全文搜索引擎,基于Lucene构建,设计为分布式的实时文档存储和搜索系统。它不仅提供搜索功能,还具备数据分析、日志收集和监控等多种用途。在本学习笔记中...
Elasticsearch 学习笔记实用知识库分享知识分享 Elasticsearch 是一个基于 Lucene 库的开源搜索引擎,提供了全文搜索、结构化搜索和分析等功能。本文档将分享 Elasticsearch 的学习笔记,涵盖从基础概念到高级应用...
**Apache Solr 架设搜索服务器 学习笔记** Apache Solr 是一款强大的开源全文搜索引擎,基于 Lucene 库,提供了高效、可扩展的搜索和分析功能。它被广泛应用于各种规模的企业,用于构建高性能的搜索应用。这篇学习...