12 2019 档案
摘要:PhaseScorer解决的是语句搜索场景,例如搜索hello world,这表示命中的文档中要hello world这样的句子,两个单词的前后顺序固定。PhaseScorer有两个实现类:ExactPhaseScorer和SloppyPhaseScorer,分别解决搜索脚本里多个单词中间没有其他单
阅读全文
摘要:查询有哪些文档包含某个词元是Lucene搜索非常基础的一个功能,上层的搜索功能和索引功能都要基于这个功能来搭建。SegmentTermDocs就是查询词元所属文档的核心类,SegmentTermPositions的功能是查询某个词元在某个文档中出现的位置,这个在需要在搜索时返回词元位置时会用到。 这
阅读全文
摘要:TermInfosReader类是Lucene搜索的核心代码,所有的搜索最终都是落到通过term查询,TermInfosReader里定义了支持的基础的term查询功能。 前置知识: 词元字典文件(tis): 文件描述: 文件中的term按照从小到大排序,排序规则:先按照属性名排,如果属性名相同,再
阅读全文
摘要:BooleanQuery对两种不同查询场景执行不同的算法: 场景1: 所有的子句都必须满足,而且所有的子句里没有嵌套BooleanQuery。 例: 上面语句表示要同时包含a,b,c三个字符(词元)的文档,假如现在索引里包含a的文档有4,6,8;b的文档有:2,4,6;c的文档有:3,4,5,这个语
阅读全文