![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lucene
文章平均质量分 61
july_2
这个作者很懒,什么都没留下…
展开
-
索引文件结构
Lucene 使用文件扩展名标识不同的索引文件,文件名标识不同版本或者代(generation)的索引片段(segment)。如.fnm文件存储域 Fields 名称及其属性,.fdt 存储文档各项域数据,.fdx 存储文档在 fdt 中的偏移位置即其索引文件,.frq 存储文档中 term位置数据,.tii 文件存储 term字典,.tis 文件存储 term频率数据,.prx存储 term接近转载 2012-08-01 17:05:08 · 607 阅读 · 0 评论 -
lucene结构详解之九删除文档文件(del)
删除文档文件(del) 格式如下: 被删除文档文件(Deleted Document File: .del) 1)Format:在此文件中,Bits和 DGaps只能保存其中之一,-1表示保存DGaps,非负值表示保存 Bits。 2)ByteCount:此段中有多少文档,就有多少个 bit 被保存,但是以 byte 形式计数,也即B转载 2012-09-19 18:12:42 · 1331 阅读 · 0 评论 -
lucene索引结构倒排图
倒排索引结构图如上:转载 2012-09-19 15:02:13 · 92 阅读 · 0 评论 -
lucene索引结构倒排图
lucene索引结构倒排图如下:转载 2012-09-19 15:05:12 · 817 阅读 · 0 评论 -
lucene结构详解之一段的元数据信息segments_N
1.lucene整体结构如下图:2.正向信息2.1段的元数据信息segments_N segments_N的具体格式如下图: 1) Format: (1)索引文件格式的版本号。 (2) 由于 Lucene 是在不断开发过程中的,因而不同版本的 Lucene,其索引文件格式也不尽相同,于是规定一个版本号。 (3)Lucene转载 2012-09-19 15:08:10 · 2397 阅读 · 0 评论 -
lucene结构详解之八标准化因子文件(nrm)
为什么会有标准化因子呢?从第一章中的描述,我们知道,在搜索过程中,搜索出的文档要按与查询语句的相关性排序,相关性大的打分(score)高,从而排在前面。相关性打分(score)使用向量空间模型(Vector Space Model),在计算相关性之前,要计算 Term Weight,也即某Term相对于某Document的重要性。在计算Term Weight时,主要有两个影响因素,一个转载 2012-09-19 18:07:32 · 939 阅读 · 0 评论 -
查准率与召回率(查全率)
-系统检索到的相关文档(A)- 系统检索到的不相关文档(B)- 相关但是系统没有检索到的文档(C)- 相关但是系统没检索到的文档(D)召回率R:用检索到相关文档数作为分子,所有相关文档总数作为分母,即 R=A/(A+C)精度P: 用检索到相关文档数作为分子,所有检索到的文档总数作为分母.即 P=A/(A+B).下面举例说明召回率和精度之转载 2013-03-18 15:42:36 · 1425 阅读 · 0 评论 -
Lucene's DisjunctionMaxQuery
Scoring很重要的一点就是scoring本身没有太大的意义,它几乎是无意义的。一个文档的得分如果是0.25也许说明是很高的匹配度也许不是,它并不能说明什么。但是如果拿这个值与另一个非常相似的查询后的得分来比较的话,如果这个值是另一个的两倍,那就是说这个文档匹配查询两次。影响得分的因素有以下几个方面:1.Term frequency---tf:文档中term出现的次数越多,得分越转载 2013-12-09 15:54:47 · 2327 阅读 · 0 评论 -
关于索引删除的策略IndexDeletionPolicy
关于索引删除的策略IndexDeletionPolicy关于索引删除的策略IndexDeletionPolicy 。public IndexWriter(Directory d, Analyzer a, boolean create) throws CorruptIndexException, LockObtainFailedException, IOExc转载 2013-12-05 14:03:26 · 604 阅读 · 0 评论 -
lucene directory
RAMDirectory在内存内索引,程序退出索引消失。FSDirectoryFSDirectory是Lucene对文件系统的操作,它有下面五个子类SimpleFSDirectory、MmapDirectory、NIOFSDirectory、NativeUnixDirectory、WindowsDirectory FSDirectory是一个抽象类,具体实现由子类原创 2013-12-05 16:31:14 · 866 阅读 · 0 评论 -
lucene优化
1·关闭复合文件格式 调用setUseCompoundFile(false)可以关闭复合文件选项。生成复合文件将消耗更多的时间2·优化索引其实就是将多个索引文件合并成单个文件的过程,为了减少索引文件的数量级,能在搜索时减少读取索引文件的时间进行的操作。3·优化索引的最佳时机是在索引过程结束后,当确认在此一段时间不会对索引文件进行更改的时候,在索引过程中优化索引只会是优化操作转载 2013-12-05 16:14:46 · 454 阅读 · 0 评论 -
lucene拼写检测
spellChecker是用来对用户输入的“检索内容”进行校正,例如百度上搜索“麻辣将”,他的提示如下图所示: 我们首先借用lucene简单实现该功能。本文内容如下(简单实现、原理简介、现有问题) lucene中spellchecker简述lucene 的扩展包中包含了spellchecker,利用它我们可以方便的实现拼写检查的功能,但转载 2013-12-17 10:10:26 · 2491 阅读 · 0 评论 -
MoreLikeThis 相似检索
MoreLikeThis,相似检索。找出某篇文档的相似文档,常见于“类似新闻”、“相关文章”等,这里完全是基于内容的分析。 1)MoreLikeThis的使用 FSDirectory directory = SimpleFSDirectory.open(new File("d:/nrtTest2"));转载 2013-12-17 10:37:58 · 1071 阅读 · 0 评论 -
当前几个主要的Lucene中文分词器的比较
1. 基本介绍:paoding :Lucene中文分词“庖丁解牛” Paoding Analysisimdict :imdict智能词典所采用的智能中文分词程序mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器ik :采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式2. 开发者及开发活跃度:paoding转载 2014-04-29 17:30:25 · 1006 阅读 · 0 评论 -
lucene结构详解之七文档号及词频(frq)信息
文档号及词频(frq)信息格式如下:词位置信息也是倒排表,也是以跳跃表形式存在的。 1. 此文件包含 TermCount个项,每一个词都有一项,因为每一个词都有自己的词位置倒排表。 2.对于每一个词的都有一个DocFreq大小的数组,每项代表一篇文档,记录此文档中此词出现的位置。这个文档数组也是和 frq文件中的跳跃表有关系的,从上面我们知道,在frq 的跳跃表转载 2012-09-19 17:55:06 · 1054 阅读 · 0 评论 -
lucene结构详解之六文档号及词频(frq)信息
文档号及词频(frq)信息格式如下:文档号及词频文件里面保存的是倒排表,是以跳跃表形式存在的 此文件包含 TermCount个项,每一个词都有一项,因为每一个词都有自己的倒排表。 对于每一个词的倒排表都包括两部分,一部分是倒排表本身,也即一个数组的文档号及词频,另一部分是跳跃表,为了更快的访问和定位倒排表中文档号及词频的位置。转载 2012-09-19 17:39:14 · 908 阅读 · 0 评论 -
索引创建处理过程及类的主线请求链表解析
文档的索引过程是通过 DocumentsWriter 的内部数据处理链完成的, DocumentsWriter 可以实现同时添加多个文档并将它们写入一个临时的 segment 中,完成后再由 IndexWriter 和 SegmentMerger 合并到统一的 segment中去。DocumentsWriter 支持多线程处理,即多个线程同时添加文档,它会为每个请求分配一个DocumentsWri转载 2012-08-01 16:02:14 · 57 阅读 · 0 评论 -
索引创建过程
文档的索引过程是通过 DocumentsWriter 的内部数据处理链完成的, DocumentsWriter 可以实现同时添加多个文档并将它们写入一个临时的 segment 中,完成后再由 IndexWriter 和 SegmentMerger 合并到统一的 segment中去。DocumentsWriter 支持多线程处理,即多个线程同时添加文档,它会为每个请求分配一个DocumentsW转载 2012-08-01 16:26:34 · 531 阅读 · 0 评论 -
影响 Lucene对文档打分的四种方式
1.在索引阶段设置 Document Boost 和Field Boost,存储在(.nrm)文件中 如果希望某些文档和某些域比其他的域更重要,如果此文档和此域包含所要查询的词则应该得分较高,则可以在索引阶段设定文档的 boost和域的 boost值。 这些值是在索引阶段就写入索引文件的,存储在标准化因子(.nrm)文件中,一旦设定,除非删除此文档,否则无法改变。 如果不转载 2012-08-31 17:51:23 · 1132 阅读 · 0 评论 -
lucene 中的TooManyClause 异常
使用Lucene检索过程中如果用到RangeQuery,PrefixQuery,WildcardQuery,FuzzyQuery等Query的时候,可能会产生 TooManyClauses异常。为什么呢? 以 RangeQuery为例,如果日期范围为 19990101到 20091231,在索引文件中有 19990102,19990103等等这些日期词组,那么RangeQuery 会被扩展成“转载 2012-08-31 18:16:38 · 800 阅读 · 0 评论 -
payload扩展
带Payload前缀的查询对象不会因为payload的存在而使得结果集发生改变,而仅仅改变其评分。欲使用Payload系列的查询语句:首先在索引阶段,要将payload存入到索引中去:PayloadAttribute..setPayload(new Payload(byte[] b));其次是实现自己的Similarity,并实现其接口float scorePayload(转载 2012-09-04 16:04:18 · 853 阅读 · 0 评论 -
lucene4.0简单API使用
package test;import java.io.IOException;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Documen原创 2012-09-07 12:00:06 · 2116 阅读 · 0 评论 -
lucene索引倒排结构图
转载 2012-09-18 16:13:46 · 78 阅读 · 0 评论 -
lucene索引倒排结构图
转载 2012-09-18 16:19:10 · 77 阅读 · 0 评论 -
lucene索引结构倒排图
转载 2012-09-19 14:54:29 · 69 阅读 · 0 评论 -
lucene结构详解之二域 (Field)的元数据信息 (.fnm)
域 (Field)的元数据信息 (.fnm) 一个段(Segment)包含多个域,每个域都有一些元数据信息,保存在.fnm 文件中,.fnm 文件格式如下 1.FNMVersion 是 fnm文件的版本号,对于 Lucene 2.9为-2 2.FieldsCount 域的数目 3. 一个数组的域(Fields) 1) Fi转载 2012-09-19 15:53:02 · 1254 阅读 · 0 评论 -
lucene结构详解之四词向量(Term Vector) 的数据信息(.tvx,.tvd,.tvf)
词向量(Term Vector) 的数据信息(.tvx,.tvd,.tvf) 格式如下:词向量信息是从索引(index)到文档(document)到域(field)到词(term)的正向信息,有了词向量信息,我们就可以得到一篇文档包含那些词的信息。 1.词向量索引文件(tvx) 1)一个段(segment)包含 N篇文档,此文件就有N 项,每一转载 2012-09-19 16:46:48 · 1339 阅读 · 0 评论 -
lucene结构详解之五词典(tis)及词典索引(tii)信息
反向信息是索引文件的核心,也即反向索引。 反向索引包括两部分,左面是词典(Term Dictionary),右面是倒排表(Posting List)。 在 Lucene 中,这两部分是分文件存储的,词典是存储在 tii,tis中的,倒排表又包括两部分,一部分是文档号及词频,保存在 frq中,一部分是词的位置信息,保存在 prx中。 Term Dictionary (tii,转载 2012-09-19 17:00:09 · 1156 阅读 · 0 评论 -
Lucene - CustomScoreQuery 自定义排序
在某些场景需要做自定义排序(非单值字段排序、非文本相关度排序),除了自己重写collect、weight,可以借助CustomScoreQuery。场景:根据tag字段中标签的数量进行排序(tag字段中,标签的数量越多得分越高)public class CustomScoreTest { public static void main(String[] args) th转载 2015-03-13 16:45:55 · 1296 阅读 · 1 评论