`
cainiaozheng
  • 浏览: 1572 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

lucene4.6的helloword

    博客分类:
  • java
 
阅读更多
package luceneDemo;


import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;

import domain.Person;
@SuppressWarnings("deprecation")
public class Demo1 {
	@Test
	public void hello() throws Exception{
		Person p = new Person();
		p.setId(1);
		p.setName("jia贾宝玉");
		p.setDesc("我是天生大王,不能得罪");

		/**把对象的每个属性转换成字段(field)
		 * 第一个参数:保存在内容中的名称
		 * 第二个参数:要保存在内容的值
		 * 第三个参数:是否保存在内容中
		 * 				yes是保存,no就是不用保存.
		 * 第四个参数:是否保存在目录中
		 * 				index.no:不保存目录
		 * 				index.not_analyzed:保存目录,但是不分词
		 * 				index.analyzed:保存目录并且分词
		 */
		Field fieldId = new Field("id",p.getId().toString(),Store.YES,Index.NOT_ANALYZED);
		Field fieldName = new Field("name",p.getName(),Store.YES,Index.ANALYZED);
		Field fielddesc = new Field("desc",p.getDesc(),Store.YES,Index.ANALYZED);
		//创建document对象,用于保存field
		Document document = new Document();
		document.add(fieldId);
		document.add(fieldName);
		document.add(fielddesc);
		//创建检录内容和检索目录的保存位置
		Directory directory = FSDirectory.open(new File("./indexDir"));
		//创建检索器
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_46);
 		IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_46, analyzer);
 		//创建一个IndexWriter,把检录内容和检索目录保存到指定的位置(directory)
 		IndexWriter writer = new IndexWriter(directory, config);
		writer.addDocument(document);
		writer.close();
	}
	
	
	/*
	 * 创建搜索
	 * */
	@Test
	public void search() throws Exception{
		//指定文件搜索的位置
		Directory directory = FSDirectory.open(new File("./indexDir"));
		IndexReader indexReader = IndexReader.open(directory);
		//创建一个搜索器
		IndexSearcher searcher = new IndexSearcher(indexReader);
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_46);
		//指定要搜索的field的名称
		QueryParser queryparser = new QueryParser(Version.LUCENE_46,"name",analyzer);
		//搜索的关键字
		Query query = queryparser.parse("jia");
		//搜索出的内容,前1条记录
		TopDocs topdocs = searcher.search(query, 1);
		//搜索的总记录条数
		int conut = topdocs.totalHits;
		//搜索的总条数,其中是一个数组scoredoc
		ScoreDoc[] scoredocs = topdocs.scoreDocs;
		List<Person> list = new ArrayList<Person>();
		for (ScoreDoc scoredoc : scoredocs) {
			//每一个条数的角标
			int index = scoredoc.doc;
			//通过角标找到搜索的document
			Document document = searcher.doc(index);
			//保存person对象
			Person person = new Person();
			person.setId(Integer.parseInt(document.get("id")));
			person.setName(document.get("name"));
			person.setDesc(document.get("desc"));
			list.add(person);
		}
	for (Person person : list) {
		System.out.println(person.getId());
		System.out.println(person.getName());
		System.out.println(person.getDesc());
	}	
	}
}

分享到:
评论

相关推荐

    lucene4.6jar

    《全面解析Lucene 4.6:核心概念与应用实践》 Lucene 4.6是Apache Lucene项目的一个重要版本,它是一个高性能、全文本搜索引擎库,为开发者提供了强大的文本检索功能。在这个版本中,Lucene进行了诸多优化和改进,...

    lucene4.6例子

    《深入理解Lucene 4.6:索引构建、查询执行与近实时搜索》 Lucene是一个开源全文搜索引擎库,广泛应用于各种信息检索系统。在本文中,我们将深入探讨Lucene 4.6版本,包括如何创建索引、执行查询以及实现近实时搜索...

    lucene4.6所有jar包

    《深入理解Lucene 4.6:搜索引擎框架详解》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。它提供了完整的搜索功能,包括索引、搜索、高亮显示结果等,广泛应用于各种信息检索系统。本文将重点探讨...

    Lucene4.6+Solr4.6实战开发垂直搜索引擎视频课程

    18.lucene4.6索引的相关操作 19.lucene4.6的各种Query(1) 20.lucene4.6的各种Query(2) 21.lucene4.6的各种Query(3) 22.solr4.6的快速搭建 23.solr4.6索引的相关操作 24.solr4.6搜索的相关参数功能(1) 25.solr4.6搜索...

    Lucene4.6实战应用

    《Lucene4.6实战应用》一书主要探讨了Apache Lucene 4.6版本在实际项目中的应用和深入理解。Lucene是一个高性能、全文检索库,它为开发者提供了强大的文本搜索功能。作为开源项目,Lucene被广泛应用于各种信息检索...

    lucene4.6实例

    《深入理解Lucene 4.6:实例解析与实践指南》 Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护。它为开发者提供了在Java应用中实现全文索引和搜索的能力,广泛应用于各类信息检索系统。本文将重点...

    基于Lucene4.6+Solr4.6+S2SH实战开发垂直搜索引擎

    对于抓取的数据,进行去重,去标签,然后利用lucene 和 solr 进行索引和搜索。 课程的最大特点是内容新颖全面而又通俗易懂。对于实际搜索引擎所涉及的各种核心技术都有全面细致的介绍,除了作为搜索系统核心的网络...

    lucene 4.6 API docs (CHM格式)

    Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后...

    lucene(HelloWord)

    在"lucene(HelloWord)"这个例子中,我们将创建一个简单的索引并执行查询。首先,我们需要添加相关的依赖库,例如,在Java环境中,可以将`lib`目录下的Lucene库加入到项目中。这里,我们假设你已经准备好了Lucene的...

    luence4.6例子

    《Apache Lucene 4.6源代码解析》 Apache Lucene 是一个开源的全文检索库,由Java编写,为开发者提供了强大的文本搜索功能。在深入理解Lucene 4.6的源代码之前,我们首先需要了解全文搜索引擎的基本原理。全文搜索...

    lucene-facet-4.6.0.jar

    Lucene4.6版本,适用于Lucene的所有研究,以及中文分词功能

    Lucene demo

    在描述中提到,这个 demo 使用的是 Lucene 4.6 版本。Lucene 的每个新版本通常会引入新的特性和改进,同时可能也会有向后不兼容的更改。例如,从 4.6 升级到 5.0 可能需要调整代码,以适应新的 API 或者功能。在使用...

    luncene 4.6 自定义查询评分规则

    在本篇文章中,我们将深入探讨如何在Lucene 4.6中实现自定义查询评分规则。此技术允许用户根据特定需求调整文档的相关性评分,从而更精确地满足搜索需求。 ### Lucene 4.6 自定义查询评分规则 #### 一、背景与概述...

    lucene,lucene教程,lucene讲解

    lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....

    lucene-4.7.0全套jar包

    【Lucene 4.7.0 全套JAR包详解】 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“lucene-...

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    Lucene3.5源码jar包

    本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...

    Lucene时间区间搜索

    Lucene是一款强大的全文搜索引擎库,广泛应用于各种数据检索场景。在C#环境下,利用Lucene进行时间区间搜索是提高数据检索效率和精确度的重要手段。本篇将深入探讨如何在C#中实现Lucene的时间区间查询匹配,以及涉及...

Global site tag (gtag.js) - Google Analytics