`
kaiy_ai
  • 浏览: 5371 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

lucene 最基本入门。

 
阅读更多

刚刚接触lucene 写个最简单程序。记录一下。

 

  • 建立索引:

 @Test

	public void firstIndexer() throws Exception{
		
		//打开一个directory  其中 FSDirectory是个工具类,它会根据操作系统返回合适的Directory类型。生产环境要根据实际情况进行选择。
		Directory d = FSDirectory.open(new File(INDEX_DIR));
		//使用IndexWriterConfig创建indexWriter  ,conf 中可以设置参数。以优化性能。
		IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_34,new StandardAnalyzer(Version.LUCENE_34));
		IndexWriter indexWriter = new IndexWriter(d, conf);
		
		
		//数据文件  我用的是一个目录下的所有文件。文件全部是都是HTML
		File dataFile = new File(DATA_DIR);
		File[] files = dataFile.listFiles();
		
		for (int i = 0; i < files.length; i++) {
			Document doc = new Document();
			File f = files[i];
			//使用文件产见FIELD 该接口分析正文,不存存储正文信息。 注意只有小信息如标题 文件名等适合存储到索引。
			doc.add(new Field("contents",new FileReader(f)));//有变化的地方  
			//分析 并且保存。
			doc.add(new Field("filename",f.getCanonicalPath(),Field.Store.YES, Field.Index.ANALYZED));//有变化的地方 
			indexWriter.addDocument(doc);
		}
		
		//优化 提交。
		indexWriter.optimize();
		indexWriter.close();
		
	
	}

建立索引后会在你indexPath中看到

 

索引文件

 

  • 有索引了 ,那就查询吧!!

 

@Test
	public void search() throws Exception {
		
		//查询基本类  search 有几种 ,但是4.0貌似要将所有的search都集中到indexSearcher
		//现在的indexsearcher 的构造方法很灵活,可以使用reader 也可是用多线程。并发多个查询多个索引。
		IndexSearcher seacher = new IndexSearcher(FSDirectory.open(new File(INDEX_DIR)));
		
		//lucene提供的优化方式 。支持一些逻辑查询 。但是最终转换出来的一般BOOLEANQUERY。如果过于复杂反回影响查询效果。建议根据业自己写booleanquery
		QueryParser qp = new QueryParser(Version.LUCENE_34,"contents",new StandardAnalyzer(Version.LUCENE_34));
		
		//检索对象。
		Query query = qp.parse("index");
		//瞧瞧给我们转换成了什么query对象
		System.out.println(query);
		//查询 lucene 没有分页机制,如果需要可以尝试传入collector 。我就写个10,意思获取前十条数据。
		//返回TOPDOCs  并不是结果,而是结果的一种封装,还包含了其他的检索结果相关的信息
		TopDocs top = seacher.search(query,10);
		//结果总数
		System.out.println(top.totalHits);
		//遍历结果
		ScoreDoc[] result = top.scoreDocs;
		for (int i = 0; i < result.length; i++) {
			//怎么吃进去 怎么吐出来。。doc进去的当然得doc出来 ,result中只有docid 不是加载全部内容,所以这里需要借助indexseacher
			//根据docID取出数据。
			Document doc = seacher.doc(result[i].doc);
		       	////contents 因为没有存储 所以值为null 。
			System.out.print(doc.getFieldable("filename")+"======");
			System.out.println(doc.getFieldable("contents"));
		}
		
		
	}

 

能建能查。。。入门够了。

下一步将研究lucene的索引结构。

 

  • 大小: 8 KB
分享到:
评论

相关推荐

    lucene基本使用

    自己写的lucene基础入门

    lucene入门

    lucene入门相关知识,包括基本介绍、简单示例、核心API介绍。

    lucene入门demo

    里面编写了法创建,搜索的基本方法 LuceneDemo 单个文件索引,创建查找 CopyFile 为多文件复制多些文件做准备 CreateIndexe 多文件创建索引;Searcher多文件搜索对应CreateIndexe

    Lucenedemo

    lucene入门demo 实现基本的检索 可以进行改进

    Lucene介绍的PPT

    Lucene API的介绍,适合入门的人学习.包括全文索引文件的基本结构.

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    Nutch入门.rar

    1.4 nutch VS lucene.....2 2. nutch的安装与配置.....3 2.1 JDK的安装与配置.3 2.2 nutch的安装与配置........5 2.3 tomcat的安装与配置......5 3. nutch初体验7 3.1 爬行企业内部网....7 3.1.1 配置nutch.....

    ELK入门到精通

    后文的四种基本架构中将逐一介绍应用到的其它套件。 Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于...

    lucenc 工程实例

    初学lucene的同学可以参照一下,代码中整理了一些说明,可以很快入门lucene,希望对大家有用!

    ElasticSearch分布式全文检索入门视频教程

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索...

    SpringBoot2.x:Elasticsearch快速入门

    一个分布式的实时文档存储,每个字段可以被索引与搜索一个分布式实时分析搜索引擎能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据Elasticsearch是面向文档,即文档是可以被索引的信息的基本单位...

    Solr原理以及基本应用.pptx

    关于solr的一些基础入门,基于solr6.5,了解之后可以基本上架构出属于自己的搜索引擎

    AppProjects:存放一些Java,JavaEE,Android和iOS的二进制文件;里面同时有zip压缩文件,可以直接下载,不需要克隆整个仓库!!!都是一些小演示,注释详细一点,就不写教程文档了

    Android新控件ViewPager2入门示例 Android仿闲鱼底部导航栏 安卓阿里开源ARouterDemo Android使用RecyclerView播放视频列表 Android桌面图标和App名字 Android解决滑动冲突JavaEE JavaEE中Lucene入门程序 Struts2

    Solr入门

    Solr它是一种开放源码的、基于LuceneJava的搜索服务器,易于加入到Web应用程序中。Solr提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT和JSON等格式)。它易于安装和配置,而且附带了一...

    ElasticSearch入门(一)单节点初体验

    ES作为MySQL等关系型数据库的LIKE功能出现(当然这只是简单的类比),基于Apache的Lucene实现,提供RESTful风格的操作(增删改查)。随着ES生态的不断繁荣,结合ELK(ElasticSearch, Logstash, Kibana

    分布式全文检索系统SolrCloud简介

    本文简单描述SolrCloud的特性,基本结构和入门,基于Solr4.5版本。Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库。Solr是以Lucene为基础实现的文本检索应用服务。SolrCloud是Solr4.0版本开发出的具有...

    nutch 初学文档教材

    1.4 nutch VS lucene.....2 2. nutch的安装与配置.....3 2.1 JDK的安装与配置.3 2.2 nutch的安装与配置........5 2.3 tomcat的安装与配置......5 3. nutch初体验7 3.1 爬行企业内部网....7 3.1.1 配置nutch....7 ...

    ElasticSearch企业级开发

    本课程深入浅出剖析了Elasticsearch的核心基础知识,带着大家一步一步,从快速入门,到理解Elasticsearch的工作原理、内核级原理,再到动手实战操作Elasticsearch的各种核心功能,可以基于Java语言开发基本的搜索和...

Global site tag (gtag.js) - Google Analytics