`
zhh9106
  • 浏览: 58276 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

上一篇文章我们讲到了索引的建立,下一步就行搜索了,实现简单的搜索功能,不多说,直接贴代码,因为代码里面有注释,所以其它的也不多说了,本来也不是复杂的东西。

package lucene;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.ParseException;
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;

public class SearcherLucene {

	public void searcher() throws IOException, ParseException 
	{
		//1、创建Directory,因为我们在建立索引时,是建立在这个directory里面,所以我们搜索也是在这个directory里面搜
		Directory directory=FSDirectory.open(new File("E:/lucene/index01")); //索引创建于硬盘中
		
		//2、创建IndexReader
		IndexReader indexReader=IndexReader.open(directory);
		
		//3、根据IndexReader创建IndexSearcher
		IndexSearcher indexSearcher=new IndexSearcher(indexReader);
		
		//4、创建QueryParser查询解析器来确定搜索的文件内容(意思是,你要从哪里搜索),第二个参数是搜索域,意思是从名为content的搜索域里面找
		QueryParser queryParser=new QueryParser(Version.LUCENE_43,"content",new StandardAnalyzer(Version.LUCENE_43));
		
		//5、根据QueryParser来创建Query对象,把要搜索的内容,从哪里搜,怎么搜都封装成一个对象
			//用java作为参数,意思就是在content域中找到有关键字为java的
		//Query query=queryParser.parse("java");
		  Query query=queryParser.parse("zhhzhhzhh");//如果在建立索引之后改变了硬盘中的文章的内容,要重新建立索引,否则新增的内容不会别搜索到
		
		//6、根据Query对象作为参数,用IndexSearcher来搜索内容,返回一个TopDocs对象
	        //(实际上,这个对象封装了那些最符合搜索条件的结果的信息)
		TopDocs topDocs=indexSearcher.search(query, 10);
		
		//7、根据TopDocs对象来获取存了ScoreDoc对象的数组
	        //(ScoreDoc是一个评分对象,因为lucene在搜索过程中,给每一个资源都评分,然后按照分数高低来决定最符合的搜索条件的结果,这个对象同样存了这些结果的信息)
		ScoreDoc[] scoreDocs=topDocs.scoreDocs;
		
		for(ScoreDoc scoreDoc:scoreDocs)
		{
			//8、根据IndexSearcher和ScoreDoc来确定具体的Document对象
			Document document=indexSearcher.doc(scoreDoc.doc);
			
			//9、根据Document对象得到想要的值
			System.out.println("文章的编号:"+scoreDoc.doc+"   "+"文件名filename:"+document.get("filename")+"   "+"文件路径filepath:"+document.get("filepath"));
			
		}
		
		//10、关闭IndexReader
		indexReader.close();
		
	}
		
}

 

下面为这个搜索写个测试类:

public class LuceneSearcherTest {

	
	
	@Test
	public void testSearcher() throws IOException, ParseException 
	{
		SearcherLucene searcherLucene=new SearcherLucene();
		
		searcherLucene.searcher();
		
	}
	
}

 

下面是执行结果:

文章的编号:0   文件名filename:jvm.hprof - 副本.fff   文件路径filepath:E:\lucene\luceneexamplefile\jvm.hprof - 副本.fff
文章的编号:1   文件名filename:jvm.hprof - 副本.hhh   文件路径filepath:E:\lucene\luceneexamplefile\jvm.hprof - 副本.hhh
文章的编号:2   文件名filename:jvm.hprof.ini   文件路径filepath:E:\lucene\luceneexamplefile\jvm.hprof.ini
文章的编号:3   文件名filename:jvm.hprof.log   文件路径filepath:E:\lucene\luceneexamplefile\jvm.hprof.log
文章的编号:4   文件名filename:jvm.hprof.txt   文件路径filepath:E:\lucene\luceneexamplefile\jvm.hprof.txt

 

因为在做测试中,我随便找了几篇txt文档,但这些都不会影响到搜索的结果。这个功能还是比较简单的,在逻辑和代码上都不会复杂。

 

这样就可以简单的实现对一些文本文档建立索引和进行简单的搜索了。

 

 

0
0
分享到:
评论

相关推荐

    lucene4.3 按坐标距离排序

    在"lucene4.3 按坐标距离排序"这个主题中,我们将探讨如何在Lucene 4.3版本中利用地理位置信息进行文档排序,特别是在处理地理空间搜索时的应用。 首先,Lucene 4.3引入了对地理空间搜索的支持,这允许我们根据地理...

    lucene4.3源码

    Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,...

    基于lucene4.3的知识图谱搜索引擎XunTa(一种用"知识点"来找人的搜人引擎).zip

    1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。  输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。  可访问 http://www.xunta.so立即体验...

    lucene-4.3.1资源

    Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。在Java编程环境中,它为开发者提供了强大的文本检索功能,使得在海量数据中快速查找相关信息变得简单易行。本篇文章将详细探讨Lucene 4.3.1版本的...

    lucene的IKAnalyzer以及兼容4.3

    Lucene是一个强大的全文检索库,广泛应用于搜索引擎和信息检索系统中。在中文处理方面,IKAnalyzer是一个优秀的开源中文分词器,专为Lucene设计,旨在提高中文分词的准确性和效率。本文将深入探讨IKAnalyzer的特性和...

    基于lucene 的简单搜索引擎.rar

    **4.3 多字段搜索** 可以构造复杂的Query,同时搜索多个字段。 **4.4 更新和删除索引** `IndexWriter`允许对已有索引进行更新和删除操作,保持数据同步。 ### 5. 应用场景与挑战 Lucene广泛应用于各种信息检索...

    lucene4.10.3

    《Apache Lucene 4.10.3:深入理解全文搜索引擎核心技术》 Apache Lucene 是一个开源的全文搜索引擎库,由Java编写,被广泛应用于各种信息检索系统中。4.10.3 版本是Lucene的一个稳定版本,它在前代的基础上进行了...

    Lucene+原理与代码分析完整版

    4.3 搜索优化 包括缓存策略、批量读取、近实时搜索等技术,提高搜索性能。 五、代码分析与实战 结合Lucene的API,我们可以编写出从创建索引、执行搜索到显示结果的完整代码。例如,如何自定义Analyzer、构建...

    java全文搜索lucene-3.0.0-src+lib.zip

    《Java全文搜索引擎Lucene 3.0.0源码及库文件详解》 Java全文搜索引擎Lucene是一款开源的、高性能的文本分析和检索库,它为开发者提供了在Java应用程序中实现全文搜索功能的能力。本篇将深入探讨Lucene 3.0.0版本的...

    毕设项目:基于Ajax+Lucene构建搜索引擎的设计和实现(ASP.NET+源代码+论文)

    2 Lucene.net构建搜索引擎原理 2 2.1 全文搜索引擎 2 2.1.1 搜索引擎的分类 2 2.1.2 搜索引擎的工作原理 2 2.2 Lucene与搜索引擎 3 2.3 索引和搜索 4 2.4 Ajax技术 4 3 需求分析 5 3.1 同步环境 5 3.2功能需求 6 3.3...

    Lucene 3.6 学习笔记

    Lucene 是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发。本文将深入探讨Lucene 3.6版本中的关键概念、功能以及实现方法。 ### 第一章 Lucene 基础 #### 1.1 索引部分的核心类 - `Directory`: 用于存储...

    lucene-5.3.1源代码

    Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发并维护。作为Java平台上的一个开源项目,它为开发者提供了强大的文本搜索功能,使得在应用程序中实现复杂的全文检索变得简单。本文将深入探讨Lucene 5.3.1...

    solr4.3源代码一

    Solr4.3是Apache Solr的一个早期版本,它是一个基于Lucene的全文搜索服务器,提供了高可配置、可扩展的搜索和分析功能。Solr4.3源代码的获取通常是为了深入理解其内部工作原理,进行定制开发或优化。在你提供的信息...

    lucene-7.2.0.tgz

    4.3 智能推荐:结合机器学习,Lucene可以构建智能推荐系统,根据用户搜索历史推荐相关内容。 总结,Lucene 7.2.0作为信息检索领域的佼佼者,其高效、灵活的特性使其在各种项目中大放异彩。掌握Lucene的使用,不仅能...

    基于用户主题偏好的智能检索算法及实现_周育忠1

    3. Lucene 4.3 实现:为了实现这一智能检索系统,作者采用了开源全文搜索引擎 Lucene 4.3。Lucene 提供了高效的文本索引和搜索能力,为算法提供了强大的技术支持。此外,系统还提供了主题词提示、主题查询扩展和相关...

    lucene4.3.0+IK Analyzer2012FF

    Lucene,作为Apache软件基金会下的一个开源全文检索库,为Java开发者提供了强大的文本搜索功能。其核心功能包括文档的索引、搜索以及相关性排序。Lucene 4.3.0是该库的一个重要版本,它在前代的基础上进行了多项优化...

    lucene全文检索

    #### 4.3 近实时搜索(Near Real-time Search) 通过 Segment 合并和 NRT(Near Real-time)管理,Lucene 可以在短时间内完成索引更新并反映到搜索结果中。 ### 应用场景 Lucene 被广泛应用在各种搜索引擎项目中,...

    lucene3.5学习笔记

    ### Lucene 3.5 学习笔记 #### 一、Lucene 3.5 基本概念 ##### 1.1 Lucene 概述 ...通过深入理解这些概念和实践应用,可以帮助开发者更好地利用 Lucene 和 Solr 构建高效且功能强大的搜索应用。

    solr4.3源代码二

    你可以通过分析Lucene目录下的源代码,理解其底层的搜索算法和数据结构,如倒排索引、TF-IDF等。 总的来说,掌握Solr 4.3的源代码意味着你可以深入到系统的核心,理解其工作原理,并能够针对特定需求进行定制和优化...

Global site tag (gtag.js) - Google Analytics