本文来自:fair-jm.iteye.com 转截请注明出处
学习的材料是北风网的课程:
http://www.ibeifeng.com/goods-378.html
代码是边看视频边自己码的 不知道是否侵权 如有侵权请告知 会立即删除
lucene的版本更新也挺快的 这套视频我刚买的时候还是4.6.0 昨天看到lucene那已经到4.7.2了
于是用4.7.2做为学习的版本
索引的建立和读取
主要是两个类
IndexWriter和IndexReader
最初的demo也是根据这两个类展开
IndexWriter的构造方法如下:
Constructs a new IndexWriter per the settings given in conf.
需要一个Directory和IndexWriterConfig对象作为参数
其中Directory表示索引存放的路径
IndexWriter包含使用lucene版本(lucene各版本不兼容)和Analyzer(分词器)
代码如下:
//使用标准分词器 Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47); //使用FSDirectory的open方法打开磁盘上的目录 Directory dir = FSDirectory.open(indexPath.toFile()); //设置IndexWriterConfig IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_47, analyzer);
得到IndexWriter 需要写入Document对象 Document对象内有很多的Field
也就是将Field填入Document对象 再由IndexWriter写入到磁盘内
代码如下:
try (IndexWriter iw = new IndexWriter(dir, config)) { Document doc = new Document(); // id:1 title:key1 key2 content:key3 key4 // StringField不分词 查询时要输入完整的查询 例如输入 key1 就不会得到结果 // TextField是分词的 查询词输入 key3或者key4会得到结果 但是输入key3 key4就不会得到结果了 IndexableField idField = new IntField("id", 1, Field.Store.YES); IndexableField titleField = new StringField("title", "key1 key2", Field.Store.YES); IndexableField contentField = new TextField("content", "key3 key4", Field.Store.YES); doc.add(idField); doc.add(titleField); doc.add(contentField); iw.addDocument(doc); iw.commit(); } } catch (IOException e) { e.printStackTrace(); }
简单的索引建立就完成了(以上代码花括号不配对是中间截了一下 try没截取 代码中的try是try-with-resources)
然后是通过索引获取内容
需要IndexReader对象 可以通过DirectoryRedaer.open方法得到(传入的参数是放索引的目录)
然后通过IndexSearch传入Query对象参数进行查询 查询得到TopDocs的对象 再进一步得到document的id
将id传入IndexReader的document方法后获得具体的Document对象(好绕啊有没有.....)
最后通过Document对象的get方法传入key 得到value(我所说的key就是上面代码中IndexabelField的第一个 参数)
看具体代码:
public static void searcherDemo(Path indexPath) { try { Directory dir = FSDirectory.open(indexPath.toFile()); try (IndexReader reader = DirectoryReader.open(dir)) { IndexSearcher search = new IndexSearcher(reader); Query query = new TermQuery(new Term("content", "key3 key4")); //这样查询不到 因为TextField是进行分词的 // Query query = NumericRangeQuery.newIntRange("id", 1, 1, true,true); TopDocs topDocs = search.search(query, 10); int hits = topDocs.totalHits; System.out.println("hits:" + hits); ScoreDoc[] scoreDocs = topDocs.scoreDocs; for (ScoreDoc sd : scoreDocs) { int docId = sd.doc; Document doc = reader.document(docId); System.out.println(doc.get("id") + ":" + doc.get("title") + ":" + doc.get("content")); } } } catch (IOException e) { e.printStackTrace(); } }
简单记录一下笔记和代码~需要完整教程的可以购买北风网的视频(我可不是打广告喂....
相关推荐
《Lucene 4.7.2 Demo:Java全文搜索引擎的核心技术探索》 Lucene,作为Apache软件基金会的一个开源项目,是Java...通过深入学习和实践,开发者可以充分利用Lucene 4.7.2的特性,提升信息检索系统的性能和用户体验。
**Lucene 学习笔记 1** Lucene 是一个全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够在其应用程序中集成高级的搜索功能。本篇学习笔记将深入探讨 Lucene 的...
lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记
lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子...
【Lucene 3.6 学习笔记】 Lucene 是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发。本文将深入探讨Lucene 3.6版本中的关键概念、功能以及实现方法。 ### 第一章 Lucene 基础 #### 1.1 索引部分的核心...
标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...
1. **全文检索基础**:Lucene的核心功能是实现全文检索,它能够对文本数据进行索引,使得用户可以通过关键词快速找到相关文档。这涉及到分词、词频统计、倒排索引等关键技术。 2. **分词器(Tokenizer)**:Lucene...
### Lucene 3.5 学习笔记 #### 一、Lucene 3.5 基本概念 ##### 1.1 Lucene 概述 **1.1.1 IndexWriter** `IndexWriter` 是 Lucene 中的核心类之一,用于创建或更新索引。它提供了添加文档、删除文档、优化索引等...
《Lucene 3.5 学习笔记》 在信息技术高速发展的今天,搜索引擎技术成为了信息检索的核心工具。Apache Lucene,作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene 3.5版本的相关知识...
1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a) 测试分析器的分词效果 b) 第三方中文...
本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...
**Lucene学习指南** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单的API,使得开发者能够方便地在应用中实现全文检索功能。本篇文章将...
NULL 博文链接:https://kylinsoong.iteye.com/blog/719415
【Lucene学习笔记】 Lucene 是一款开源的全文检索框架,由Apache软件基金会维护,它提供了高效的、可扩展的搜索引擎功能。不同于一个完整的应用程序,Lucene 提供的是一个基础组件,开发者可以将其集成到自己的应用...
1. **文档模型**:Lucene中的每个文档由多个字段组成,每个字段可以有不同属性,如是否被索引、是否被存储等。 2. **分词器(Tokenizer)**:这是将原始文本拆分成可搜索的词元的过程,不同的分词器适用于不同的...
Lucene学习笔记.doc nutch_tutorial.pdf nutch二次开发总结.txt nutch入门.pdf nutch入门学习.pdf Nutch全文搜索学习笔记.doc Yahoo的Hadoop教程.doc [硕士论文]_基于Lucene的Web搜索引擎实现.pdf [硕士论文]_基于...
**Lucene索引管理器(基于Luke修改而来)** Lucene是Apache软件基金会的一个开源全文检索库,它提供了强大的文本搜索功能。而Luke是Lucene的可视化工具,它允许开发者查看和操作Lucene索引,包括文档内容、字段、分词...