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();
}
}
}
分享到:
相关推荐
**Lucene 学习笔记 1** Lucene 是一个全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够在其应用程序中集成高级的搜索功能。本篇学习笔记将深入探讨 Lucene 的...
标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...
lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子...
《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...
以上就是Lucene 3.6的学习笔记,涵盖了从基础到高级的各种搜索和索引操作,以及相关的分词和扩展功能。通过学习这些内容,可以深入理解Lucene的工作机制,并利用其强大的搜索能力构建高效的应用。
五、创建索引 1. IndexWriter:是建立索引的关键。构造方法可以指定创建或追加模式,添加Document到索引,并通过close()方法完成写入。 2. Directory:索引的存储位置,可以选择FSDirectory(文件系统)或...
《Lucene 3.5 学习笔记》 在信息技术高速发展的今天,搜索引擎技术成为了信息检索的核心工具。Apache Lucene,作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene 3.5版本的相关知识...
以上是对 Lucene 3.5 的学习笔记总结,涵盖了从索引构建到查询操作的基础和高级功能。通过深入理解这些概念和实践应用,可以帮助开发者更好地利用 Lucene 和 Solr 构建高效且功能强大的搜索应用。
【Lucene学习笔记】 Lucene 是一款开源的全文检索框架,由Apache软件基金会维护,它提供了高效的、可扩展的搜索引擎功能。不同于一个完整的应用程序,Lucene 提供的是一个基础组件,开发者可以将其集成到自己的应用...
**Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...
《Lucene笔记共38页.pdf》压缩包包含了一份详尽的Lucene学习资料,这份笔记深入浅出地探讨了Apache Lucene这个全文搜索引擎库。Lucene是Java开发的开源库,广泛应用于信息检索和大数据分析领域,为开发者提供了强大...
《Lucene 3.0 学习笔记(三)与Paoding整合》 在深入了解Lucene 3.0的过程中,我们经常会遇到如何将其与第三方工具进行整合的问题,以提升搜索性能和用户体验。这篇学习笔记主要关注的是将Lucene 3.0与Paoding搜索...