`
海阔天高
  • 浏览: 1995 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene学习笔记1:创建索引并查询

阅读更多
package testLucene;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Date;

import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
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.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;

public class TestIndexHello {

	public void testIndex() throws IOException {
		Date date1 = new Date();

		IndexWriter writer = new IndexWriter("E:\\index\\index",
				new StandardAnalyzer(), true);
		File file = new File("E:\\test");

		if (file.isDirectory()) {
			File[] fileList = file.listFiles();
			for (int i = 0; i < fileList.length; i++) {
				Document doc = new Document();
				BufferedReader reader = new BufferedReader(
						new InputStreamReader(new FileInputStream(fileList[i]),
								"UTF-8"));
				// Reader reader = new BufferedReader(new
				// FileReader(fileList[i]));
				Field field1 = new Field("content", reader);
				Field field2 = new Field("path", fileList[i].getAbsolutePath(),
						Field.Store.YES, Field.Index.TOKENIZED);
				doc.add(field1);
				doc.add(field2);

				TokenStream ts = new StandardAnalyzer().tokenStream("content",
						reader);
				Token tk = ts.next();
				while (tk != null) {
					System.out.print(tk.term() + " ");
					tk = ts.next();
				}
				writer.addDocument(doc);
			}
		}
		writer.close();
		Date date2 = new Date();
		System.out.println("");
		System.out.println("建立索引用了" + (date2.getTime() - date1.getTime())
				+ "毫秒");
	}

	public void helloSearch() throws Exception {
		IndexSearcher seach = new IndexSearcher("E:\\index\\index");
		// System.out.println("请输入查询条件:");
		QueryParser parser = new QueryParser("content", new StandardAnalyzer());
		// BufferedReader br = new BufferedReader(new
		// InputStreamReader(System.in));
		// Query query = parser.parse(br.readLine());
		String str = new String("world");
		Query query = parser.parse(str);
		Hits hits = seach.search(query);
		System.out.println("'" + str + "'" + "正在搜索...");
		if (hits.length() == 0) {
			System.out.println("没有找到符合条件的结果");
		} else {
			for (int i = 0; i < hits.length(); i++) {
				Document doc = hits.doc(i);
				System.out.println("搜索结果是:" + doc.get("content"));
				System.out.println("文件路径是" + doc.get("path"));
			}
		}

	}

	public static void main(String[] args) {
		TestIndexHello tindex = new TestIndexHello();
		try {
			tindex.testIndex();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			tindex.helloSearch();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
分享到:
评论
1 楼 confident_f 2011-09-28  
你问过这个问题,这是怎么回事呢?

相关推荐

    Lucene 学习笔记 1

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

    lucene学习笔记

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

    【大搜集:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子...

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

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

    Lucene 3.6 学习笔记

    以上就是Lucene 3.6的学习笔记,涵盖了从基础到高级的各种搜索和索引操作,以及相关的分词和扩展功能。通过学习这些内容,可以深入理解Lucene的工作机制,并利用其强大的搜索能力构建高效的应用。

    本人的Lucene2.9学习笔记

    五、创建索引 1. IndexWriter:是建立索引的关键。构造方法可以指定创建或追加模式,添加Document到索引,并通过close()方法完成写入。 2. Directory:索引的存储位置,可以选择FSDirectory(文件系统)或...

    Lucene学习笔记.doc

    【Lucene学习笔记】 Lucene是一个高性能、全文检索的开源库,完全用Java编写,能够帮助开发者在应用程序中实现复杂的搜索引擎功能。它提供了强大的索引和搜索机制,使得从大量文本数据中快速找到相关信息变得简单。...

    lucene 3.5学习笔记

    《Lucene 3.5 学习笔记》 在信息技术高速发展的今天,搜索引擎技术成为了信息检索的核心工具。Apache Lucene,作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene 3.5版本的相关知识...

    lucene3.5学习笔记

    以上是对 Lucene 3.5 的学习笔记总结,涵盖了从索引构建到查询操作的基础和高级功能。通过深入理解这些概念和实践应用,可以帮助开发者更好地利用 Lucene 和 Solr 构建高效且功能强大的搜索应用。

    Lucene学习笔记

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

    lucene基础学习笔记&源码

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

    lucene笔记共38页.pdf.zip

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

    lucene3.0学习笔记(三)与paoding整合

    《Lucene 3.0 学习笔记(三)与Paoding整合》 在深入了解Lucene 3.0的过程中,我们经常会遇到如何将其与第三方工具进行整合的问题,以提升搜索性能和用户体验。这篇学习笔记主要关注的是将Lucene 3.0与Paoding搜索...

Global site tag (gtag.js) - Google Analytics