`
smallearth
  • 浏览: 37523 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Lucene小练6(复习searcher)

 
阅读更多
//主类
package org.se.lucene;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
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.store.LockObtainFailedException;
import org.apache.lucene.util.Version;
import org.apache.lucene.search.Query;
public class hellowLucene {


	public void index()
	{
		IndexWriter writer=null;
		try {
			//1.创建directory
			Directory directory=FSDirectory.open(new File("f:/lucene/Index03"));
			//2.创建IndexWriter
			 writer=new IndexWriter(directory,new IndexWriterConfig(Version.LUCENE_35,
					new StandardAnalyzer(Version.LUCENE_35)));
			//3.创建Document对象
			Document document=null;
			//4.为Document添加Field
			File f=new File("f:/lucene/lucenes");
			
			   for(File file:f.listFiles())
			   {
				   document=new Document();
				   
				   document.add(new Field("content",new FileReader(file)));
				   document.add(new Field("filename",file.getName(),Field.Store.YES,
						   Field.Index.NOT_ANALYZED));
				   document.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,
						   Field.Index.NOT_ANALYZED));
				   //5.通过IndexWriter添加文档到索引中
				   writer.addDocument(document);
			   }
		
			 
		}catch (CorruptIndexException e) {
			e.printStackTrace();
			// TODO: handle exception
		}catch (LockObtainFailedException e) {
			e.printStackTrace();
			// TODO: handle exception
		}catch (IOException e) {
			e.printStackTrace();
			// TODO: handle exception
		}finally{
			try {
				if(writer!=null)
					writer.close();
				 
			    }catch (CorruptIndexException e2) {
					e2.printStackTrace();
					// TODO: handle exception
				}catch (IOException e2) {
					e2.printStackTrace();
					// TODO: handle exception
				}
		}
	}
	public void search()
	{
		try {
			//1.创建Directroy
			Directory directory = FSDirectory
					.open(new File("f:/lucene/Index03"));
			//2.创建IndexReader
			IndexReader reader = IndexReader.open(directory);
			//3.根据IndexReader创建IndexSearcher
			IndexSearcher searcher = new IndexSearcher(reader);
			//4.创建搜索的Query
			QueryParser parser = new QueryParser(Version.LUCENE_35, "content",
					new StandardAnalyzer(Version.LUCENE_35));
		   Query query=parser.parse("ask");
			//5.根据qurey搜索并返回TopDocs
			TopDocs tds = searcher.search(query, 10);
			//6.根据TopDocs获取Scoredoc对象
			ScoreDoc[] sDoc = tds.scoreDocs;
			for (ScoreDoc sds : sDoc) {
				//7.根据searcher和scoredoc对象获取具体Document
				Document document = searcher.doc(sds.doc);
				//8.根据Document获取具体的值
				System.out.println(document.get("filename") + "["
						+ document.get("path") + "]");
			}
			reader.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
//测试类
package org.se.lucene;

import org.junit.Test;

public class LuceneTest {
	@Test
	public void test_Index()
	{
		hellowLucene hLucene=new hellowLucene();
		hLucene.index();
	}
	@Test
	public void test_Search()
	{
		hellowLucene hLucene=new hellowLucene();
		hLucene.search();
	}

}


分享到:
评论

相关推荐

    lucene IndexSearcher相关和查询示例

    一步一步跟我学习lucene是对近期做lucene索引的总结,大家有问题的话联系本人的Q-Q: 891922381,同时本人新建Q-Q群:106570134(lucene,solr,netty,hadoop),如蒙加入,不胜感激,大家共同探讨,本人争取每日一博,...

    lucene 小资源

    这个“lucene 小资源”可能包含了作者在学习和使用Lucene过程中积累的一些资料和经验,对于初学者或者想要深入理解Lucene的人来说,是非常宝贵的资源。 Lucene的核心功能包括文档索引、搜索以及相关的文本处理。它...

    lucene的小案例

    在这个“lucene的小案例”中,我们结合了其他几个框架,如iBatis、Spring和Struts2,构建了一个完整的搜索解决方案。 首先,让我们深入了解Lucene的核心概念: 1. **索引(Index)**:在Lucene中,索引是预处理...

    lucene入门小例子

    这个“lucene入门小例子”很可能是为了帮助初学者理解并掌握Lucene的基本用法而设计的一系列示例代码。 Lucene的核心概念包括索引、文档、字段和查询。首先,你需要理解索引的概念,它类似于传统数据库中的索引,但...

    lucene检索小例子

    **Lucene检索小例子** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。这个"lucene检索小例子"程序展示了如何利用Lucene的强大功能来构建索引和执行搜索操作。Lucene的核心特性包括文本分析、...

    lucene,lucene教程,lucene讲解

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

    lucene小实例文件检索

    6. **Searcher**:执行查询并返回结果的组件。主要有两种Searcher,一是IndexSearcher,用于在已经建立的索引中查找匹配的文档;另一种是RealTimeSearcher,它能直接访问内存中的最新索引,适用于高并发环境。 7. *...

    lucene部分常用代码

    Lucene中的Filter可以对搜索结果进行过滤,从而获得更小范围内更精确的结果。下面是一个示例代码: ```java filter filter = new DateFilter(fielddate, datetime.parse("2005-10-1"), datetime.parse("2005-10-30...

    基于Lucene3.6进行全文检索的小案例

    在这个小案例中,我们将了解Lucene的基本概念,以及如何构建一个简单的全文检索系统。 首先,让我们了解Lucene的核心组件。Lucene主要包括以下几个部分: 1. **索引(Index)**:Lucene通过将文本数据转换为可搜索...

    Lucene3.5源码jar包

    6. **倒排索引的优化**:在`MergePolicy`和`MergeScheduler`中,你可以看到Lucene如何决定何时和如何合并索引段,以保持索引的效率和空间利用率。 7. **近实时搜索(NRT)**:从3.0版本开始,Lucene引入了NRT机制,...

    Java搜索引擎 Lucene

    6. **高可用性**:Lucene可以与其他Java项目无缝集成,支持多线程和分布式环境。 使用Lucene的基本步骤包括: 1. **创建索引**:首先,需要将要搜索的数据(如文件内容)读取并分词,然后使用Lucene API创建索引。 ...

    lucene3.0 lucene3.0

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

    lucene 索引小示例

    《Lucene索引小示例解析》 Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护。在Java编程环境中,Lucene被广泛应用于构建搜索功能,特别是对于大量文本数据的高效检索。本篇文章将通过一个简单的小...

    lucene 高级搜索项目

    在项目中,`02_lucene_searcher`可能涵盖了附件搜索的实现。附件搜索是指对文件(如PDF、DOC等)内容的检索。这需要将附件内容读取并提取成可搜索的文本,通常通过第三方库(如Apache Tika)进行解析。 **5. 全文...

    lucene 2.0 api以及lucene 3.0 api

    4. **分析器(Analyzer)**: Lucene 2.0 提供了多种预定义的分析器,如 `StandardAnalyzer`,处理文本分词、大小写转换等预处理工作。 5. **内存索引与磁盘索引**: `RAMDirectory` 用于内存中的索引,而 `FSDirectory...

    Lucene学习源码.rar

    6. 搜索器(Searcher):执行搜索操作,返回最相关的文档列表。 二、Lucene工作流程 1. 创建索引:首先,使用IndexWriter创建一个索引,将文档的字段添加到索引中。这个过程中,分词器会对文档内容进行处理。 2. ...

    Lucene时间区间搜索

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

    Annotated Lucene 中文版 Lucene源码剖析

    《Annotated Lucene 中文版 Lucene源码剖析》是一本深入探讨Apache Lucene的书籍,专注于源码解析,帮助读者理解这个强大的全文搜索引擎库的工作原理。Lucene是一款开源的Java库,它提供了高效的文本搜索功能,被...

    基于Lucene的Lucene

    6. **Searcher**: 执行查询并返回结果的组件,使用倒排索引来找到包含指定查询词项的文档。 ### 文件检索系统开发步骤 1. **初始化索引**: 创建一个Directory对象(如FSDirectory),表示存储索引的物理位置。然后...

    lucene in action 2nd edition, lucene in action 第二版 PDF

    2. **Lucene API**:详细讲解了Lucene的各个核心组件,如Analyzer(分析器)用于处理文本,Document(文档)用于存储数据,IndexWriter(索引写入器)用于创建和更新索引,以及Searcher(搜索器)用于执行查询。...

Global site tag (gtag.js) - Google Analytics