Lucene (v4.5) 深入学习(一) 原理



Lucene (v4.5) 深入学习(一) 原理

建索引,搜索流程与Lucene各模块的对应关系

lucene模块和搜索过程B
lucene模块和搜索过程A
1.Lucene的analysis 模块主要负责词法分析及语言处理而形成Term。
2.Lucene的index模块主要负责索引的创建,里面有IndexWriter。
3.Lucene的store模块主要负责索引的读写。
4.Lucene的QueryParser主要负责语法分析。
5.Lucene的search模块主要负责对索引的搜索。
6.Lucene的similarity模块主要负责对相关性打分的实现。

索引使用的数据压缩方法

主要有四种方法,这些方法在搜索引擎中都属于常见技术。这里的名称参考《Lucene原理与代码分析》。

前缀+后缀

主要用于term字符串的压缩。
前缀后缀

差值

用于压缩文档号之类的东西。
差值

或然跟随规则

图是从《Lucene原理与代码分析》来的,不过作者的解释把问题复杂化了,还是官方文档的说明清楚明了。
跟随
官方文档直接举了个例子,例子是这样的:
一个term在文档7中出现一次,在文档11中出现3次,如何记录这些信息?如果单纯利用差值规则记录文档,应为7,4。为了节约空间,如果term只出现一次就直接依附于前面的文档编号记录,方法是使文档编号左移一位(7×2=14),并在末位置1(14+1=15)。如果出现不止一次,那么就使用另一种方法:对于文档11,同样使文档编号左移一位(4×2=8),后面的一个记录单元记录次数3。于是最后形成的文件中的记录为15, 8, 3。所以如果代表文档的数字是偶数,那么意味着后面跟着的记录单元里存放的是次数。

跳跃表

常见数据结构。
跳跃表
Please read full article from Lucene (v4.5) 深入学习(一) 原理












No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts