最近看下Lucene的东西,把它写下来可以看下。Lucene结构和工作原理我就不说了,网上好多。
我的环境是Lucene2.0
写一个简单使用Lucene的示例。此类首创建索引,然后显示索引文档的情况,最后搜索(只在content找,和在title或content里找)。
package net.blogjava.chenlb.lucene;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
/**
* Lucene简单使用
* @author chenlb 2008-3-8 下午11:42:55
*/
public class LuceneUse {
public static void main(String[] args) throws Exception {
LuceneUse liu = new LuceneUse();
//索引
IndexWriter iw = new IndexWriter("index", new StandardAnalyzer(), true);
//添加要索引的Lucene文档
Document doc = liu.createDoc("Lucene创建索引示例", "chenlb", "2008-03-08", "Lucene索引的内容在这里,这些内容不被存储.");
iw.addDocument(doc);
doc = liu.createDoc("文档2", "bin", "2007-10-03", "这是索引的另一个文档");
iw.addDocument(doc);
doc = liu.createDoc("学习内容", "chenlb", "2008-3-3", "要努力奋斗,祝网友们天天快乐");
iw.addDocument(doc);
iw.optimize(); //优化
iw.close();
//读
System.out.println("===========索引文档内容=============");
IndexReader reader = IndexReader.open("index");
for(int i=0; i<reader.numDocs(); i++) {
Document d = reader.document(i);
liu.printDoc(d);
}
System.out.println("===========以下是单域查找'天天'结果============");
//单域搜索
IndexSearcher searcher = new IndexSearcher("index");
QueryParser parser = new QueryParser("content", new StandardAnalyzer());
Query q = parser.parse("天天");
long start = System.currentTimeMillis();
Hits hits = searcher.search(q);
long end = System.currentTimeMillis();
for(int i=0; i<hits.length(); i++) {
liu.printDoc(hits.doc(i));
}
System.out.println("共找到: "+hits.length()+" 个文档,花了:"+(end-start)+"ms");
//多域搜索
System.out.println("===========以下多域是查找'内容'结果============");
//从title或content找
q = MultiFieldQueryParser.parse("内容", new String[] {"title", "content"}, new BooleanClause.Occur[] {BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD}, new StandardAnalyzer());
start = System.currentTimeMillis();
hits = searcher.search(q);
end = System.currentTimeMillis();
for(int i=0; i<hits.length(); i++) {
liu.printDoc(hits.doc(i));
}
System.out.println("共找到: "+hits.length()+" 个文档,花了:"+(end-start)+"ms");
}
/**
* 显示文档内容
*/
private void printDoc(Document d) {
System.out.println("标题: "+d.get("title")+", 作者: "+d.get("author")+", 日期: "+d.get("date")+", 内容: "+d.get("content"));
}
/**
* 创建一个Lucene文档
*/
private Document createDoc(String title, String author, String date, String content) {
Document doc = new Document();
doc.add(new Field("title", title, Field.Store.YES, Field.Index.TOKENIZED));
doc.add(new Field("author", author, Field.Store.YES, Field.Index.NO));
doc.add(new Field("date", date, Field.Store.YES, Field.Index.NO));
doc.add(new Field("content", content, Field.Store.YES, Field.Index.TOKENIZED));
return doc;
}
}
分享到:
相关推荐
Lucene 创建索引与搜索的简单应用,包含了测试所需要的jar 包。
本文是整理的关于lucene的一些简单的介绍,以及对于lucene的简单的使用。
Lucene创建索引,查询索引的简单使用。
教大家使用lucene进行简单的开发,贴出了主要的源码和注释.
Lucene入门与使用,非常简单,适合入门
Lucene简单实例记录 简单Luncene的示例应用
lucene简单demo lucene简单demo lucene简单demo lucene简单demo
spring-lucene简单项目
Lucene 简单入门程序实例
lucene的应用.pdf 01solr企业级搜索引擎准备阶段.pdf 02solr企业级搜索引擎实战演练.pdf 适合新手搭建solr使用
Lucene的简单介绍,也介绍了搜索的原理,非常简短,适合入门的使用
lucene简单Demo,附带的文件夹考进C盘就OK
使用compass+lucene实现简单的全文检索功能
使用compass+lucene实现简单的全文检索功能
lucene初级教程,教你如何使用LUCENE,以及一些简单的代码
lucene简单的代码例子 lucene简单的代码例子 参考
全文索引工具 开源工具 java编写 lucene的简单demo
基于lucene 的简单搜索引擎.rar
这是一个用java实现的lucene简单应用,大家可以参考
Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免 费开放源代码工具;就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费java资讯检索程式库。人们...