- 浏览: 12635 次
最新评论
lucene索引格式
2011年07月01日
本文描述的是在lucene2.9中使用的索引文件格式。如果你使用的另外一个版本的lucene,那么请参考相应版本的 docs/fileformat.html 这个文件。
Apache Lucene 是由java写的,但lucene也有其他语言的实现版本。 如果其他语言的实现版本要和Apache lucene保持兼容性的话,那么lucene的索引格式就应该是与具体的语言实现无关。本文志在从与实现语言无关的角度来描述Apache lucene的索引格式。
随着Lucene的版本的更新,本文也会随之更新。不同语言的Lucene的实现,应该要在索引格式上达成一致。本文会提到兼容性的问题,描述了怎样从老版本的索引格式升级到新版的索引格式。
在版本2.1中,索引文件格式有一个重要的变化,它不再需要 提交锁了。(在2.1版本以前,提交的时候会生成一个文件,叫做锁文件)。这种改变是向前兼容的,使用2.1及之后的版本,我们可以打开2.1之前的版本的索引。当新的segments文件被保存的时候(也就是提交操作),新的segments会使用新的索引格式(这就意味着,不需要特别的升级--从2.1之前升级到2.1)。但是要注意的是,一旦一个提交操作发生,那么2.1之前的lucene版本就无法读取新的索引了。
在版本2.3以后,新的索引格式允许不同的segments之前可以共享同一个doc store (vector 和 stored field)文件。这能使索引在某些情况下性能更好。这个特性也是向前兼容的。 The fundamental concepts in Lucene are index, document, field and term. Lucene中最基本的概念是index,document,field 和term。
一个index由一系列的document组成。
一个document有一系列的field组成。
一个field由一系列的term组成。
一个term就是一个string。
在不同field种的相同的string是要被当成不同的term的。terms其实由一对string组成,第一个string是field的name,第二个string是真正的词条。 索引存储的是关于词条的信息,这样能使基于词条的搜索更有效。Lucene使用的是倒排索引。这样的索引存储的是包含某个词条的的文档集合。说是倒排索引,是相对于正常的情况来说的,在正常的情况下,是文档包含词条。 lucene也提供存储的功能,field的原始值可以被存起来,被存储起来的field称为stored。被索引起来的field被称为indexed。一个field既可以是stored也可以是indexed。field的文本既可以经过切词之后被索引,也可以整个文本当成一个词条被索引。大多数的field是要切词的,不过有些时候我们需要将整个文本当成词条索引起来。 具体的关于field的情况可以参考这里 Field。 Lucene的索引可以由多个子索引或者说是segment组成。每一个segment都是完全独立的索引,都是可以被单独搜索的。索引产生的方法主要有两种: 为新的文档创建新的segment。 合并已经存在的segment而产生的segment。 一个搜索有可能涉及到多个索引,一个索引可以是由多个segment组成。 lucene会为每一个document安排一个document number(文档序号)。第一个文档序号是0,之后的文档序号都要比之前的文档序号大。
document number 是会变的。如果一般不要轻易在lucene外部使用document number。一般来说,document number在下面的一些情况中会变化。 首先需要知道的是,document number只是在segment内部是唯一的。如果同时使用几个segment的时候,局部的的document number需要被转化成为全局的唯一的document number。一个很简单的做法是这样的,给每个segment指定一个基值,在基于这些基值将局部的document number转换成全局的。 当文档被删除的时候,document number就不连续了,也就是document number之间有了空隙。这些空隙会在下次合并操作的时候被消除,要删除的文档也是在合并的时候真正被删除的。由此来看,我们可以知道,刚合并完的segment应该是没有空隙的。 下面 列出的是每个segment都会包含的文件: Field names. 这个文件包含了索引中使用到的field的名称 Stored Field values. 这个文件是一个attribute-value的集合,attribute 指的是field name。这个文件用来存储document的信息的,比如说它的标题、url、或者访问数据库时要用到的数据库。这个文件里面存的就是搜索结果出来的时候要返回的东西。它们可以根据document number进行查找。 一个词条的集合,包含了索引中所有的词条。Term dictionary中,除了词条信息,也有存储了包含该词条的文档的编号以及该词条在词频文件和term proximity文件中的位置。 Term Frequency data. For each term in the dictionary, the numbers of all the documents that contain that term, and the frequency of the term in that document if omitTf is false. Term Proximity data. For each term in the dictionary, the positions that the term occurs in each document. Note that this will not exist if all fields in all documents set omitTf to true. Normalization factors. For each field in each document, a value is stored that is multiplied into the score for hits on that field. Term Vectors. For each field in each document, the term vector (sometimes called document vector) may be stored. A term vector consists of term text and term frequency. To add Term Vectors to your index see the Field constructors Deleted documents. An optional file indicating which documents are deleted. Details on each of these are provided in subsequent sections.
发表评论
-
uboot的配置问题对\include\configs\[boardname].h的修改
2012-01-20 00:53 1413uboot的配置问题对\include\configs\[bo ... -
windows 7 的 MBR 分析
2012-01-20 00:53 839windows 7 的 MBR 分析 2010年10月04日 ... -
CUBRID 中的线程模型
2012-01-20 00:53 561CUBRID 中的线程模型 2010 ... -
OpenNMS扩展 - 事件配置
2012-01-20 00:53 844OpenNMS扩展 - 事件配置 2011年04月24日 ... -
Process and Thread
2012-01-20 00:53 556Process and Thread 2011年02 ... -
诬凹沃官燠喷闳
2012-01-19 08:42 474诬凹沃官燠喷闳 2012年01月06日 U辙趴“ ... -
???
2012-01-19 08:42 555??? 2012年01月10日 ... -
是傻频日志呵阡啄凛仄
2012-01-19 08:42 547是傻频日志呵阡啄凛仄 2012年01月09日 刘 ... -
我的日志
2012-01-19 08:42 657我的日志 2012年01月14日 护卫队的战士C ... -
PHP DDOS攻击的处理办法
2012-01-15 19:52 498PHP DDOS攻击的处理办法 ... -
手把手教你如何搭建PHP本地测试环境和MYSQL数据库的建立和使用
2012-01-15 19:52 836手把手教你如何搭建PHP ... -
centos 内核升级(2.6.18-194.el5升2.6.30)
2012-01-15 19:52 804centos 内核升级(2.6.18-194. ... -
慢慢研究
2012-01-15 19:52 621慢慢研究 2011年12月24日 ... -
Linux集群的安装与并行计算
2012-01-15 19:52 785Linux集群的安装与并行 ... -
自己写的一个文件上传的类iteye技术网站
2012-01-11 12:04 626自己写的一个文件上传的类iteye技术网站 2011年07月 ... -
How Tomcat Works 读书笔记(第四章)
2012-01-11 12:04 412How Tomcat Works 读书笔记(第四章) 201 ... -
shell小结(10)
2012-01-11 12:04 546shell小结(10) 2011年07月01日 #!/b ... -
compass搜索
2012-01-11 12:04 500compass搜索 2011年07月01日 compas ...
相关推荐
Lucene索引器实例Lucene索引器实例Lucene索引器实例Lucene索引器实例
深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制深入 Lucene 索引机制
lucene索引查看工具及源码lucene索引查看工具及源码lucene索引查看工具及源码
lucene 索引 查看 工具
lucene索引文件格式介绍,很详细,每一个文件都解释了,一目了然,做项目用的
lukeall-0.9.jar为Lucene索引查看工具,方便大家查看索引
Lucene索引文件格式,本文定义了Lucene(版本1.3)用到的索引文件的格式。
一个开源的lucene索引查看程序及代码,
lukeall,Lucene索引文件查看工具可支持Lucene4.7版本的索引查看,直接双击打开,选择索引目录进行使用
lucene索引结构原理
Lucene创建索引,查询索引的简单使用。
lucene索引查看工具luck7.4.0 ,解压后,windows平台点击luck.bat即可运行。
这款已经老了,2.4以后的lucene索引用不了。我上传了最新版本的,有需要的话!请到http://download.csdn.net/source/1423241 下。一款可以查看Lucene分词后在索引的排名以及是否有无该词,很多时候用于查看有无需要...
Lucene索引的基本操作,包括添加和更新操作及测试代码;
该程序代码属于本人2015所写,虽然尚有不足,却实现了对多个文件夹下的数据进行Lucene建立索引和查询功能,并包含了所需的所有jar包,工程直接导入即可运行。
luke源码--查看lucene索引文件
java创建Lucene索引
iTextPDFExtractor.java ------ ...--PDFBox创建PDF文件的Lucene索引 PDFBoxPathIndex.java ------- --PDFBox创建指定目录PDF文档索引 POIOfficeExtractor.java ----- -- POI处理Excel和Word文档代码
lucene并行索引
luke lucene索引数据查看器.Luke 是查询LUCENE索引文件的工具, 而且用 Luke 的Search可以做查询。