`
浴盆儿
  • 浏览: 80502 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Lucene学习笔记之创建Index

阅读更多
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 学习笔记 1** Lucene 是一个全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够在其应用程序中集成高级的搜索功能。本篇学习笔记将深入探讨 Lucene 的...

    lucene学习笔记

    标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...

    Lucene学习笔记

    【Lucene学习笔记】 Lucene 是一款开源的全文检索框架,由Apache软件基金会维护,它提供了高效的、可扩展的搜索引擎功能。不同于一个完整的应用程序,Lucene 提供的是一个基础组件,开发者可以将其集成到自己的应用...

    lucene基础学习笔记&源码

    **Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...

    本人的Lucene2.9学习笔记

    本文将详细讲解Lucene 2.9.1版本的核心概念、架构以及索引创建与搜索的流程。 一、Lucene 2.9.1环境搭建 在开始使用Lucene之前,首要任务是搭建开发环境。这包括在项目classpath中添加核心库文件——`lucene-core-...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...

    lucene笔记共38页.pdf.zip

    《Lucene笔记共38页.pdf》压缩包包含了一份详尽的Lucene学习资料,这份笔记深入浅出地探讨了Apache Lucene这个全文搜索引擎库。Lucene是Java开发的开源库,广泛应用于信息检索和大数据分析领域,为开发者提供了强大...

    lucene笔记

    1. **创建索引(Creating an Index)**: 首先,读取数据源,对每个文档进行分词,将这些分词结果作为术语存储在倒排索引(Inverted Index)中。 2. **搜索(Searching)**: 用户输入查询字符串,Lucene通过分析查询...

    Lucene.net学习书记整理

    1. **索引(Index)**:Lucene的核心功能之一是构建索引,将文本数据转化为可搜索的结构。索引是一个倒排索引,其中每个词项都有一个指向包含该词项的文档列表的指针,这种设计极大地提高了搜索速度。 2. **分析器...

    Lucene技术文档doc

    在深入学习Lucene的过程中,理解其基本原理和使用方法至关重要。通过对不同版本文档的阅读和比较,可以更好地掌握Lucene的发展历程和技术改进,从而在实际项目中灵活运用。对于想要进一步提升搜索技术能力的开发者,...

    全文检索学习笔记

    2. **反向索引表(Inverted Index)**:对于每个字典中的词汇,反向索引表记录了这个词出现在哪些文档中,以及在文档中的位置信息。 **索引创建过程**: 1. **分词(Tokenization)**:将源文档分解成独立的词语,...

    [HeyJava][传智播客]全文检索Lucene源码

    1. **索引构建**:Lucene通过分词器(Tokenizer)将文本分解为独立的词语,然后创建倒排索引(Inverted Index),使得能快速定位到包含特定关键词的文档。 2. **分词与分析**:Lucene内置了多种分词器和分析器,如...

    ElasticSearch学习笔记

    ElasticSearch学习笔记 ElasticSearch是基于Apache Lucene的搜索和数据分析引擎,提供了RESTful API用于数据的索引、搜索和分析。本笔记将对ElasticSearch的基本概念、架构、应用场景和实现细节进行详细介绍。 一...

    学习笔记(ElasticSearch)(实战)

    **Elasticsearch实战学习笔记** Elasticsearch是一个开源的全文搜索引擎,基于Lucene构建,设计为分布式的实时文档存储和搜索系统。它不仅提供搜索功能,还具备数据分析、日志收集和监控等多种用途。在本学习笔记中...

    elasticsearch 学习笔记实用知识库分享知识分享

    Elasticsearch 学习笔记实用知识库分享知识分享 Elasticsearch 是一个基于 Lucene 库的开源搜索引擎,提供了全文搜索、结构化搜索和分析等功能。本文档将分享 Elasticsearch 的学习笔记,涵盖从基础概念到高级应用...

    Apache Solr 架设搜索服务器 学习笔记

    **Apache Solr 架设搜索服务器 学习笔记** Apache Solr 是一款强大的开源全文搜索引擎,基于 Lucene 库,提供了高效、可扩展的搜索和分析功能。它被广泛应用于各种规模的企业,用于构建高性能的搜索应用。这篇学习...

Global site tag (gtag.js) - Google Analytics