![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lucene
文章平均质量分 62
cj96248
程序员,单纯、固执、容易体会到成就感;能够挑灯夜战不眠不休;能够迎难而上挑战自我。
展开
-
Lucene 深入学习(3)Lucene索引初识
前言: Lucene的倒排索引是了解整个搜索的入口,本节将通过代码实例的方式初步认识Lucene的索引创建过程。原始文档可以使用任何文本文件来熟悉Lucene索引的创建,这里我选用了经典作品《致加西亚的信》英文版 A Message to Garcia,你可以在互联网上轻易地找到这篇文章。之所以用英文材料,是因为Lucene默认只支持英文,英文材料可以避免出现分词不准确造成的认知偏差,在学习完分词的原创 2017-10-24 22:26:22 · 572 阅读 · 0 评论 -
Lucene 深入学习(1)全文检索
前言: Lucene 是一个高性能、可伸缩的全文检索工具包。在学习Lucene之前,应该先了解一些全文检索的基本知识。 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立索引,指明该词在文章中出现的次数和位置,当用户查询时,检索系统根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。信息检索(IR)与全文检索(Full-text Search)信息检索大约可以分为下原创 2017-10-15 23:19:59 · 573 阅读 · 0 评论 -
Lucene深入学习(5)Lucene的IndexWriter
摘要: Lucene的索引器IndexWriter主要是创建索引,合并索引,控制索引的创建过程。本次代码示例基于Lucene 6.2.1.获得IndexWriter想要获得IndexWriter实例,需要用到唯一的构造器:public IndexWriter(Directory d, IndexWriterConfig conf)第一个参数指定了索引地址,第二个参数就是索引的配置信息了。Lucene原创 2017-11-26 23:14:57 · 2553 阅读 · 1 评论 -
Lucene深入学习(11)Lucene的索引分布式构想
直接使用Lucene作分布式很难实现,官方不支持这种设计,好像也没打算支持。因为大多数情况下,使用基于Lucene的Solr或者Elasticsearch很容易地实现分布式需求。索引限制因为机器环境各部相同,一般来说,Lucene可以处理500-8000万规模的索引数据。利用分布式技术,可以让Lucene达到数十亿文档的处理规模。Lucene与hadoopLucene的Directory是一个接口,原创 2018-01-30 22:20:27 · 1133 阅读 · 0 评论 -
Lucene深入学习(9)Lucene的索引优化
在创建索引过程中,一些参数可以影响索引的效率。如果了解一些优化的手段,可以更合理地配置应用。不过这都是一些思想,如果数据量达不到一定级别,用户量不到一定规模,默认的参数总是能满足绝大部分需求。合并因子 mergeFactormergeFactor是用来决定segment该如何被addDocument() 方法进行合并的。当mergeFactor取较小值时,索引时所使用的内存少,搜索未原创 2017-12-30 23:18:28 · 1248 阅读 · 0 评论 -
Lucene深入学习(11)Lucene的索引删除
摘要: 之前的章节中已经说明了索引的添加,本节将介绍如何将特定的一个或多个文档从索引中删除。索引读取IndexReader是维护索引重要的工具类,它是一个抽象类,但是却提供了一个静态方法来获取其子类的实例。IndexReader reader = IndexReader.open(index_path)索引删除在建立索引的过程中,Lucene会为每个加入索引的Docu原创 2018-01-29 22:19:34 · 1346 阅读 · 0 评论 -
Lucene深入学习(13)Lucene的索引近实时复制
Lucene 6.0 引入了一个NRT segment replication,使得复制索引数据到另一台服务器更可靠,它利用的是更快速更便宜的本地网络技术。与目前流行的解决方案Elasticsearch/Solr等不同,它的索引性能有巨大进步。Lucene有一个独特的write-once(一次性写入) segment结构:最近索引的文档被写入一个新的segment,一旦写入,这些segment文件将原创 2018-01-31 21:57:33 · 690 阅读 · 0 评论 -
Lucene深入学习(9)Lucene的索引方式Directory
Tips 示例代码基于Lucene 6.2.1.Directory创建索引时,必须要用到,而它只有一个构造函数: public IndexWriter(Directory d, IndexWriterConfig conf) 这里的Directory是必须的。Directory是Lucene内部自定义的目录类型,它本身是一个抽象类,在Lucene自带的工具包中,Directory有两个子类,分别原创 2017-12-26 22:40:01 · 1991 阅读 · 0 评论 -
Lucene的版本迭代
Lucene已经发展到Lucene 7了,不过,Lucene 7是一个前瞻性的版本,其实,Lucene还在同时升级Lucene5 和Lucene6. Lucene在之前的版本迭代中,不断尝试新的设计思想,不断引入新的与时俱进的功能。这也导致Lucene的大版本不兼容,在我之前的项目中,从Lucene2升级到Lucene4,再升级到Lucene6,都不能平滑过渡,需要修改项目中使用到Lucene的部原创 2017-12-25 23:01:04 · 3564 阅读 · 0 评论 -
Lucene深入学习(8)Lucene的索引文件
生成索引文件使用最简洁的代价生成一组索引文件。 IndexWriter writer = null; Directory directory = FSDirectory.open(Paths.get("d://myindex")); IndexWriterConfig config = new IndexWriterConfig(); writer = new Inde原创 2017-11-30 23:54:56 · 1356 阅读 · 0 评论 -
Lucene深入学习(7)Lucene的索引过程
摘要: 索引是Lucene最重要的过程,通过IndexWriter的addDocument()方法可以加入各种Document。本节将以addDocument为入口,探索Lucene的索引过程。本次代码示例基于Lucene 6.2.1.索引调用方法IndexWriter的 addDocumentpublic long addDocument(Iterable<? extends IndexableF原创 2017-11-29 22:52:59 · 973 阅读 · 0 评论 -
Lucene深入学习(5)Lucene的Document与Field
Document与Field在Lucene中,document是一种逻辑文件。可以近似地认为它表示的是计算机中的一个文件。这个document是一种抽象的表示,它从各种维度来描述一个数据源中的每一条数据。 将一个Document与文件系统中的文件对应起来时,可以提取出很多数据单元,它们被一个称之为Field的类表示。 这里的Document-Field结构和关系型数据库结构类似,数据库的每一条记原创 2017-11-19 23:03:21 · 3326 阅读 · 0 评论 -
Lucene 深入学习(4)Lucene索引实现方式
前言: 在之前的代码代码演示中,已经能够对给定的数据建立索引。为了对文档进行索引,Lucene提供了五个基础类,这一节,将更为详细地解释与这些类有关的内容。IndexWriterpublic class IndexWriterIndexWriter是在索引过程中中的中心组件,它不是唯一用来修饰索引的类,这个类创建一个新的索引并且添加到一个已有的索引中。public abstract class D原创 2017-10-25 23:45:37 · 558 阅读 · 0 评论 -
Lucene 深入学习(2)Lucene简介
前言: Lucene和信息检索有什么关系,它又有着哪些独特之处?本节着重介绍Lucene的基本知识。Lucene是什么Lucene是Apache软件基金会Jakarta项目的一个子项目,它是开源、免费、纯Java语言的全文检索工具包。它的原作者Doug Cutting是以为资深的全文检索专家,曾主导了某搜索引擎的研发工作。Lucene的优势Lucene能够如此流行跟它的一些优点是分不开的:索引文原创 2017-10-22 21:53:30 · 717 阅读 · 0 评论