Lucene 算法介绍 IR-Lab 胡晓光.

Slides:



Advertisements
Similar presentations
颐高集团项目中心 海亮地产开发模式研究报告. 目 录 目 录 第四部分:海亮地产高周转模式执行 第二部分:海亮地产高周转模式原因 第三部分:海亮地产高周转模式内涵 第一部分:海亮地产企业背景 第五部分:海亮地产高周转支撑体系.
Advertisements

主页 双皮奶 甜布丁 红豆糕 芝麻糊. 来历 双皮奶,顾名思义,乃含双皮之奶也。 据说当年顺德一位叫何十三的农家子弟, 在清晨烹制早餐的时候,不小心在水牛 奶里翻了个花样,不久有个识货的老朋 友买去了配方,开了间食档,这顺德双 皮奶便吃成了传统,而双皮奶也便由清 末流传至今。 简介 正宗双皮奶的做法非常地考究,一步都不能.
办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
index 目次 ( 請按一下滑鼠,解答就會出現喔 !) 接續下頁解答 3-1 極限的概念.
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
While 迴圈 - 不知重複執行次數
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
户 外 拓 展 游 戏 大 全(二) 资料整理:丁 丁.
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
人 工 智 慧 報 告 五子棋AI設計 報告者 : 潘輝銘.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
系统简介 理财顾问 业务 是基于通信平台的技术优势,整合《理财周刊》、第一理财网、乾隆集团等合作伙伴提供的理财产品内容和权威的理财专家资源,以集中式呼叫中心为主的服务方式,让普通百姓可以享受到快捷、全面、专业、权威的资讯及投资理财的服务平台。
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
蚁族俱乐部 —敢于挑战,永不言弃,友谊与事业并存!.
财务管理.
第十三章 银行法律制度 银行法是金融法律体系中的核心,是国家进行宏观调控的重要法律。本章结合我国银行法的法律规定,阐述了中国人民银行的性质和法律地位、中国人民银行的职能、中国人民银行的货币政策与货币政策工具;阐述了商业银行的经营原则、商业银行的设立和组织机构和商业银行的业务等内容.
班級:行流四甲 組員:497D0004何筱瑩 497D0016鄧宜欣 497D0044呂亭儀 497D0056黃 琪 497D0063賴依淩
宦官那些事儿 宦官那些事儿 主讲:小学部李永善 主讲:小学部李永善.
AI人工智慧報告 黑白棋 班級:資工四乙 學號:498G0009 姓名:盧冠妤.
2014年重点行业分析及新思路、信模式 北京立金银行培训中心
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
电视教育课 【5】 小学生行为习惯养成教育.
2006年台灣醫學中心大搜查 聰明病人 完全就醫指南.
第 5 章 流程控制 (一): 條件分支.
第八章 查找.
网络信息资源的开发与设计 主讲教师 罗双兰 广西师范大学教育科学学院.
政府扶持资金通览 技术改造篇.
宁波爱地房产市场年报 郊五区
第二章 JAVA语言基础.
物理学专业 光学实验绪论 主讲人:路莹 洛阳师范学院物理与电子信息学院 2009年3月.
社會科報告 班級:6年3班 姓名:陳家雯 座號:24 指導老師:林國斌.
本科生医保资料的提交.
C++Primer 3rd edition 中文版 Chap 5
Chap 3 堆疊與佇列 Stack and Queue.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
搜尋資料結構 Search Structures.
統計圖表的製作.
第12章 樹狀搜尋結構 (Search Trees)
程序设计期末复习 黎金宁
第4章 程序控制结构与算法基础.
堆疊 Stack chapter 4 德明科技大學資訊科技系.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第九章 查找 2018/12/9.
資料結構與C++程式設計進階 堆疊與佇列(Stack & Queue) 講師:林業峻 CSIE, NTU 6/ 21, 2010.
数据结构 -Maple Related- 牟克典 数学科学学院信息科学系 2012秋季 1/16/2019.
第三章 栈和队列.
計數式重複敘述 for 迴圈 P
鄧姚文 資料結構 第五章:遞迴 鄧姚文
软件测试 (四)静态测试与动态测试.
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
程式的時間與空間 Time and Space in Programming
畢業資格審查系統 操作步驟說明.
第二章 Java语法基础.
新制退休實務計算說明- 現職人員退休範例說明
第 六 讲 栈和队列(一).
第二章 Java基本语法 讲师:复凡.
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
遞迴 Recursion.
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
第2章 Java语言基础.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
判斷(選擇性敘述) if if else else if 條件運算子.
Presentation transcript:

Lucene 算法介绍 IR-Lab 胡晓光

Lucene 的主要算法 单个索引的构建 多个索引的增量归并 查找定位 快速排序算法 增量算法 归并算法 分级查找机制 如何判断当前的索引中是否有需要合并的段 归并算法 如果有,如何合并这些段 查找定位 分级查找机制 二分查找和顺序查找相结合

增量算法 数据结构 栈 主要参数 合并因子 Merge Factor 用于决定合并的频度

增量算法

增量算法 let b=3 be the merge factor; M=∞ for (size = 1; size < M; size *= b) {   if (there are b indexes with size docs on top of the stack) {    pop them off the stack;    merge them into a single index;    push the merged index onto the stack;  } else {    break;  } }

增量算法 Step1 Step2 Step3 Step4 Step5 indexWriter.add(doc1) SegmentInfos(_0,1) maybeMerge = false Step2 indexWriter.add(doc2) SegmentInfos(_0,1;_1,1) Step3 indexWriter.add(doc3) SegmentInfos( _0,1;_1,1;_2,1) maybeMerge = true Merge() SegmentInfos(_3,3) Step4 IndexWriter.add(doc4) SegmentInfos(_3,3;_4,1) maybeMerge=false Step5 indexWriter.close() flushRamSegments() SegmentInfos(_5,4)

增量算法 对于N篇文档 N=1M, b=2 gives just 20 indexes 索引中包含的文档数很不均匀,大致等比数列 插入文档的速度较快,查询速度稍慢

归并算法 已知各个段内的Term都是已排序的 用一个小根堆来表示存储各个段 堆中的顺序由段中当前第一个Term决定 取出当前堆中最小的元素写入新的索引段 从最小元素所在的段中删除该元素 重新调整堆

归并算法 例子 为简单起见用一个整数来表示Term 并且不含有相等的整数 Seg1: 1,4,5 Seg2: 2,9,10,12 合并后结果为:1,2,3,4,5,6,7,8,9,10,11,12

Step1 输入各个段并建立堆

Step2 弹出最小段 把最后一个节点放到根节点 调整成堆

Step3 从Seg1中输出整数1 把Seg1插回到堆的最后 调整成堆

查找算法 查找算法 分级查找 二分查找和顺序查找相结合

查找算法 把.tii文件调入内存 在内存中用二分查找找到相应的Block 把.tis文件中相应的Block调入内存 在Block中顺序找到相应的Term

查找算法 Term在索引里是有序排列的 采用二分查找机制来定位索引里的Term 在Index包TermInfosReader类中的实现代码 private final int getIndexOffset(Term term) throws IOException { int lo = 0; // binary search indexTerms[] int hi = indexTerms.length - 1; while (hi >= lo) { int mid = (lo + hi) >> 1; int delta = term.compareTo(indexTerms[mid]); if (delta < 0)hi = mid - 1; else if (delta > 0) lo = mid + 1; else return mid; } return hi;

小结 快速排序 增量归并算法 二分查找算法

谢谢!