Lucene索引

一、lucene建立索引过程


1、解析器用来解析物理文件,从中提取出所需的文本,其作用于物理文件;
2、分析器用来分析文本内容(文字),其作用于解析器处理物理文件之后生成的文本;
Lucene没有自己开发语言分析程序,JavaCC来生成分析器;
分析器(analyzer)主要包含分词器和过滤器。分析器使用分析器和过滤器构成一个“管道”,文本在“滤过”这个管道之后,就成为可以进入管道的最小单位;
分词器(tokenizer)主要用于对文本资源进行切分,将文本规则切分为一个个可以进入索引的最小单位;
过滤器(tokenfilter)主要对分词器切分的最小单位进入索引进行预处理(大写转小写,复数转单数)

二、索引文件格式


segments文件——主要的索引块,其中包含主要的索引信息;
扩展名为fnm文件——存储Field的名称;
扩展名为fdt文件——存储所有设置了保存属性(Store.YES)的Field数据;
扩展名为fdx文件——用于存储文档在fdt文件中的位置;
扩展名为cfs文件——复合式索引格式的索引文件,相当于把多个索引文件合并起来,从未减少索引文件的数量;

三、索引优化
1、复合式索引格式 IndexWriter.setUseCompoundFile(true)
2、调整索引优化参数
a、mergeFactor 用于控制索引块的合并频率和大小
b、maxMergeDocs 用来限制每个索引块的文档数量
c、用来限制内现中的文档数量
3、内存缓冲器与索引合并
首先在内存中建立索引,然后将建立好的索引集中写到磁盘中去,从而加快索引速度
4、限制每个Field的词条数量
5、索引本身的优化 IndexWriter.optimize()合并索引

四、索引管理
1、查看:使用IndexReader类读取索引及其相关词条
2、删除:使用IndexReader类删除索引
3、更新:先删除、再新增

五、索引同步
1、Lucene并发访问规则

2、线程安全性

3、索引锁机制

时间: 2024-11-08 02:42:57

Lucene索引的相关文章

Lucene索引过程中的内存管理与数据存储

Lucene的索引过程分两个阶段,第一阶段把文档索引到内存中:第二阶段,即内存满了,就把内存中的数据刷新到硬盘上.          倒排索引信息在内存存储方式 Lucene有各种Field,比如StringField,TextField,IntField,FloatField,DoubleField-,Lucene在处理的过程中把各种Field都处理成相应的byte[],以最本质的方式来看待各种Field的内容,统一了数据的存储形式. 在写入内存阶段,第一步就是需要理清各个类之间的关系. 在索

lucene 索引合并策略

在索引算法确定的情况下,最为影响Lucene索引速度有三个参数--IndexWriter中的 MergeFactor, MaxMergeDocs, RAMBufferSizeMB .这些参数无非是控制内外存交换和索引合并频率,从而达到提高索引速度.当然这些参数的设置也得依照硬件条件灵活设置. MaxMergeDocs该参数决定写入内存索引文档个数,到达该数目后就把该内存索引写入硬盘,生成一个新的索引segment文件. 所以该参数也就是一个内存buffer,一般来说越大索引速度越快. MaxBu

Luke 5—— 可视化 Lucene 索引查看工具,可以查看ES的索引

Luke 5 发布,可视化 Lucene 索引查看工具  oschina 发布于2015年08月31日 这是一个主要版本,该版本支持 Lucene 5.2.0. 它支持 elasticsearch 1.6.0(Lucene的4.10.4) 已解决的问题:#20增加支持重建索引并不会存储领域,不暴露位置的字段值. Pull Requests:#23 Elasticsearch 支持和阴影插件组装#26 添加 .gitignore 文件#27 支持 Lucene 5#28 luke.sh 新增LUK

一步一步跟我学习lucene(18)---lucene索引时join和查询时join使用示例

了解sql的朋友都知道,我们在查询的时候可以采用join查询,即对有一定关联关系的对象进行联合查询来对多维的数据进行整理.这个联合查询的方式挺方便的,跟我们现实生活中的托人找关系类似,我们想要完成一件事,先找自己的熟人,然后通过熟人在一次找到其他,最终通过这种手段找到想要联系到的人.有点类似于"世间万物皆有联系"的感觉. lucene的join包提供了索引时join和查询时join的功能: Index-time join 大意是索引时join提供了查询时join的支持,且IndexWr

lucene 索引流程整理笔记

索引的原文档(Document). 为了方便说明索引创建过程,这里特意用两个文件为例: 文件一:Students should be allowed to go out with their friends, but not allowed to drink beer. 文件二:My friend Jerry went to school to see his students but found them drunk which is not allowed. 结果处的索引文件: Docume

MySQL和Lucene索引对比分析

MySQL和Lucene都可以对数据构建索引并通过索引查询数据,一个是关系型数据库,一个是构建搜索引擎(Solr.ElasticSearch)的核心类库.两者的索引(index)有什么区别呢?以前写过一篇<Solr与MySQL查询性能对比>,只是简单的对比了下查询性能,对于内部原理却没有解释,本文简单分析下两者的索引区别. MySQL索引实现 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式. M

lucene索引库的增删改查操作

1. 索引库的操作 保持数据库与索引库的同步 说明:在一个系统中,如果索引功能存在,那么数据库和索引库应该是同时存在的.这个时候需要保证索引库的数据和数据库中的数据保持一致性.可以在对数据库进行增.删.改操作的同时对索引库也进行相应的操作.这样就可以保证数据库与索引库的一致性. 工具类DocumentUtils 在对索引库进行操作时,增.删.改过程要把一个JavaBean封装成Document,而查询的过程是要把一个Document转化成JavaBean.在进行维护的工作中,要反复进行这样的操作

使用Lucene索引和检索POI数据

使用Lucene索引和检索POI数据 摘要: 1.简介 关于空间数据搜索,以前写过<使用Solr进行空间搜索>这篇文章,是基于Solr的GIS数据的索引和检索. Solr和ElasticSearch这两者都是基于Lucene实现的,两者都可以进行空间搜索(Spatial Search),在有些场景,我们需要把Lucene嵌入到已有的系统提供... 1.简介 关于空间数据搜索,以前写过<使用Solr进行空间搜索>这篇文章,是基于Solr的GIS数据的索引和检索. Solr和Elast

Lucene索引文件学习

?最近在做搜索,抽空看一下lucene,资料挺多的,不过大部分都是3.x了--在对着官方文档大概看一下. 优化后的lucene索引文件(4.9.0) 一.段文件 1.段文件:segments_5p和segments.gen. segments.gen保存当前段文件版本信息. segments.gen: GenHeader, Generation, Generation, Footer segments_N(segments_5p)保存最新的段的信息,包括段的个数,每个段的段名.文档数等信息. s

Lucene索引创建方法和步骤

在全文索引工具中,都是由这样的三部分组成 1.索引部分 2.分词部分 3.搜索部分 ---------------------------------- 索引创建域选项 ---------------------------------- Field.Store.YES或者NO(存储域选项) YES:表示会把这个域中的内容完全存储到文件中,方便进行还原[对于主键,标题可以是这种方式存储] NO:表示把这个域的内容不存储到文件中,但是可以被索引,此时内容无法完全还原(doc.get())[对于内容