`
eimhee
  • 浏览: 2150726 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene 反向索引原理

    博客分类:
  • JAVA
阅读更多

lucene是一个高性能的全文搜索工具, 使用反向索引结构。 下面将介绍lucene结构与算法.

 

 

例子:

有两篇文章:

文章 1 : Tom lives in Guangzhou, I live in Guangzhou too. 
文章 2 : He once lived in Shanghai. 

 

  1)

 

既然lucene是使用关键字索引和查询, 我们会采用下面的步骤处理这些关键字

 

A. 先要逐字识别出文章的字, 英文通常是用空格分割的。中文两个字却是在一起的。

B. 英文文章中的"in, 'once', 'too'没有什么实际的意义, 中文文章的"和", “是”也没什么意义, 也要根据语境去过滤掉

C.大小写会当成同一个字, 比如"He","he"

D. 单复数, 过去式也要简化成原型。 比如"lives"=>"live", "lived"=>live,

E.文章标点要能通过路lucene的分词器过滤掉

 

 

根据上面的处理:


  文章 1 中的关键字: [tom] [live] [guangzhou] [i] [live] [guangzhou] 
  文章 2 中的关键字: [he] [live] [shanghai] 

 

 

  2)

根据这些关键字, 我们可以建立反射索引。 正向的索引是 “文章”里包含“所有的关键字”。 反向索引是指反转这种关系,变成“关键字” 在“所有包含这个关键字”。 这两篇文章反向索引之后,

关键字         文章 

  Guangzhou 1 
  He 2 
  I 1 
  Live 1,2 
  Shanghai 2 
  Tom 1

 

 

 

我们仅仅知道关键字在哪一些文章之中还是不够的, 我们还需要知道关键字在文章的频率和位置, 通常这里有两个位置:

a) 字符位置

b)关键字位置

 

添加文章的频率和位置后, 我们的索引变为:

Key words the article appeared frequency position 
Guangzhou 1 2 3,6 
He 2 1 1
I 1 1 4
Live 1 [2] 2
Shanghai 2 1 3
Tom 1 1 1

 

live 还有一个位置是2,5,2 

 

 

 

Lucene的索引结构是最核心部分。 我们可以看到关键字是按字母排序的,lucene的二分法查找能很快找到关键的位置。

 

 

 

 

从上可以看出一个索引由三部分组成 document (Term Dictionary), frequency document (frequencies), the position paper (positions)。索引中不仅只有关键字, 还有频率, 位置。一些指导信息可以能过关键字和位置找到。

 

 

 

 

 

分享到:
评论

相关推荐

    lucene-索引(index).pdf

    标题与描述概述的知识点主要围绕着Lucene索引的核心概念,包括索引的基本定义、反向索引(倒排索引)的工作原理以及Lucene如何实现其独特的索引文件格式。下面将对这些知识点进行详细阐述。 ### 索引概念 索引是一...

    Lucene 原理与代码分析完整版

    Lucene的索引文件格式包括正向信息和反向信息,其中正向信息包含段的元数据、域的元数据、域的数据信息、词向量的数据信息等,而反向信息包括词典信息、文档号及词频信息、词位置信息等。Lucene的索引过程体系结构...

    Lucene原理及使用总结

    Lucene采用反向索引(inverted index)机制,这是一种数据结构,它将文档中的每个单词映射到包含这些单词的文档列表。这样,当执行搜索时,Lucene可以迅速定位到包含关键词的文档,提高了搜索效率。 **建立索引**:...

    lucene 原理与代码分析

    段合并是Lucene维护索引效率的关键过程,包括选择要合并的段、合并反向信息、更新索引结构等步骤。通过段合并,可以减少磁盘上的段数量,从而提高查询速度。 以上概述了Lucene的核心原理和代码分析中的关键点,通过...

    Lucene 原理与代码分析.pdf

    Lucene的索引文件格式包括正向信息和反向信息,以及一些额外的文件用于存储元数据和其他信息。索引文件格式的分析对于理解Lucene如何存储和组织数据至关重要。 索引过程分析章节详细描述了Lucene如何创建和管理索引...

    lucene3源码分析

    ### Lucene3源码分析知识点概述 #### 一、全文检索的基本原理 ##### 1....以上是对Lucene3源码分析的一些关键知识点总结,通过对这些概念和技术的理解,可以更好地掌握Lucene的工作原理及其应用。

    Lucene+原理与代码

    ### Lucene原理与代码分析详解 #### 全文检索的基本原理 **全文检索**是一种能够对文本中的每一个词(或短语)建立索引,并通过这些索引快速找到包含特定词(或短语)的文档的技术。全文检索系统通常包括两个主要...

    IndexerDemo:用于处理反向索引的 Java 代码

    这个名为"IndexerDemo"的项目是用Java语言实现的一个反向索引处理示例,可以帮助我们深入理解反向索引的工作原理及其在实际应用中的价值。 反向索引,顾名思义,是从关键词到文档的映射,与传统的文档到关键词的...

    Lucene 原理与代码分析

    Lucene是一个开源的全文检索引擎工具包,它为文本数据提供了索引和搜索功能。Lucene广泛应用于信息检索领域,特别是在大型项目中,如Apache软件基金会的项目中,如Eclipse和Apache Lucene自身。 在原理篇中,首先对...

    Lucene学习总结之一:全文检索的基本原理[归纳].pdf

    搜索索引(Search)阶段,用户提交查询,Lucene会对查询中的每个术语进行匹配,查找反向索引中的对应文档列表。如果查询中有多个术语,Lucene会使用特定的算法(如布尔运算、TF-IDF、BM25等)来评估文档的相关性,并...

    开发自己的搜索引擎Lucene2.0+Heritrix

    - **索引原理**:Lucene 的核心在于其高效的索引机制。它通过建立反向索引的方式,使得每个关键词都可以快速地映射到包含该关键词的文档列表上。 - **模糊查询**:传统的数据库通常不支持模糊查询,而 Lucene 则能够...

Global site tag (gtag.js) - Google Analytics