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

lucene的几个重要概念

 
阅读更多

lucene用到一些概念,了解它们的含义,有利于下面的讲解。

3.1 analyzer
Analyzer是分析器,它的作用是把一个字符串按某种规则划分成一个个词语,并去除其中的无效词语,这里说的无效词语是指英文中的“of”、 “the”,中文中的“的”、“地”等词语,这些词语在文章中大量出现,但是本身不包含什么关键信息,去掉有利于缩小索引文件、提高效率、提高命中率。
分词的规则千变万化,但目的只有一个:按语义划分。这点在英文中比较容易实现,因为英文本身就是以单词为单位的,已经用空格分开;而中文则必须以某种方法将连成一片的句子划分成一个个词语。具体划分方法下面再详细介绍,这里只需了解分析器的概念即可。

3.2 document
用户提供的源是一条条记录,它们可以是文本文件、字符串或者数据库表的一条记录等等。一条记录经过索引之后,就是以一个Document的形式存储在索引文件中的。用户进行搜索,也是以Document列表的形式返回。

3.3 field
一个Document可以包含多个信息域,例如一篇文章可以包含“标题”、“正文”、“最后修改时间”等信息域,这些信息域就是通过Field在Document中存储的。
Field有两个属性可选:存储和索引。通过存储属性你可以控制是否对这个Field进行存储;通过索引属性你可以控制是否对该Field进行索引。这看起来似乎有些废话,事实上对这两个属性的正确组合很重要,下面举例说明:
还是以刚才的文章为例子,我们需要对标题和正文进行全文搜索,所以我们要把索引属性设置为真,同时我们希望能直接从搜索结果中提取文章标题,所以我们把标题域的存储属性设置为真,但是由于正文域太大了,我们为了缩小索引文件大小,将正文域的存储属性设置为假,当需要时再直接读取文件;我们只是希望能从搜索结果中提取最后修改时间,不需要对它进行搜索,所以我们把最后修改时间域的存储属性设置为真,索引属性设置为假。上面的三个域涵盖了两个属性的三种组合,还有一种全为假的没有用到,事实上Field不允许你那么设置,因为既不存储又不索引的域是没有意义的。

3.4 term
term是搜索的最小单位,它表示文档的一个词语,term由两部分组成:它表示的词语和这个词语所出现的field。

3.5 tocken
tocken是term的一次出现,它包含trem文本和相应的起止偏移,以及一个类型字符串。一句话中可以出现多次相同的词语,它们都用同一个term表示,但是用不同的tocken,每个tocken标记该词语出现的地方。

3.6 segment
添加索引时并不是每个document都马上添加到同一个索引文件,它们首先被写入到不同的小文件,然后再合并成一个大索引文件,这里每个小文件都是一个segment。

转载:http://www.javaeye.com/topic/186864

分享到:
评论

相关推荐

    供lucene初学者学习的几个类

    对于初学者来说,掌握几个核心类的理解和使用是至关重要的。下面我们将深入探讨与标题和描述相关的几个关键Lucene类,以及如何进行建索引和查询操作。 1. **Analyzer**: 分析器是Lucene的核心组件之一,负责将输入...

    lucene学习pdf2

    在Lucene的学习中,你将接触到以下几个关键知识点: 1. **文档模型**:Lucene中的每个文档由多个字段组成,每个字段可以有不同属性,如是否被索引、是否被存储等。 2. **分词器(Tokenizer)**:这是将原始文本...

    lucene3源码分析

    Lucene的索引文件格式是其高效检索性能的基础,主要包括以下几个方面: - **基本概念**:介绍Lucene索引文件的基本术语和概念。 - **基本类型**:定义了索引文件中使用的数据类型。 - **基本规则**:阐述了文件格式...

    Lucene常用的Demo

    在学习这些示例时,重点要理解以下几个关键概念: - **索引构建**:如何将文本数据转换为倒排索引,以便于搜索。 - **搜索过程**:如何构造查询,使用`IndexSearcher`执行搜索,并获取匹配的文档。 - **文本分析**...

    lucene-3.6.0.zip

    3.6.0版本是Lucene的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够更高效地构建搜索解决方案。下面我们将深入探讨Lucene 3.6.0的关键特性和应用。 一、Lucene的基本概念与架构 Lucene是一个Java库,...

    Lucene实战源码(Lucene in Action Source Code)part2

    在Lucene中,核心概念包括以下几个方面: 1. **文档(Document)**:代表要索引的信息单元,可以包含多个字段(Field),如标题、内容、作者等。 2. **字段(Field)**:文档的组成部分,每个字段有特定的类型,如...

    LUCENE的搜索引擎例子

    在B/S架构中,搜索引擎的实现主要分为以下几个步骤: 1. **索引创建**:这是搜索引擎的第一步,我们需要遍历要索引的数据源(例如文件系统、数据库等),读取内容,并使用Lucene的Analyzer进行分词,然后创建Term...

    Lucene.2.0.API

    《Lucene.2.0.API》是关于开源全文搜索引擎库Lucene的一个重要参考资料,它详尽地记录了Lucene 2.0版本的API接口及其使用方法。Lucene是一个由Apache软件基金会开发的Java全文检索库,它提供了高性能、可扩展的文本...

    lucene2.0.0

    Lucene 2.0.0是其早期的一个重要版本,虽然已有些许年代,但其中蕴含的技术理念和实现方式仍具有很高的学习价值。对于那些致力于构建搜索引擎或者对信息检索技术感兴趣的朋友来说,了解并掌握Lucene 2.0.0是必不可少...

    lucene-4.9.1

    为了更好地利用Lucene,开发者需要掌握以下几个关键概念: 1. 文档(Document):代表要被搜索的信息,可以包含多个字段(Field)。 2. 字段(Field):文档中的数据单元,每个字段都有自己的属性,如是否可搜索、...

    lucene-4.7.0官方文档

    在Lucene 4.7.0的版本中,官方文档详细阐述了以下几个关键知识点: 1. **Lucene的基本概念**:包括倒排索引、分词器(Analyzer)、文档(Document)、字段(Field)、索引(Index)、查询(Query)等基本元素。倒排...

    Lucene 字符编码问题

    解决Lucene中的字符编码问题,可以从以下几个方面入手: 1. **确保输入一致性**:在将文本输入到Lucene之前,确保所有数据都已转换为统一的编码格式,通常推荐使用UTF-8,因为它是最通用的。 2. **设置Analyzer**...

    最新版linux lucene-8.8.1.tgz

    在Linux环境下,Lucene的安装和使用通常包括以下几个步骤: 1. **下载与解压**:首先,你需要从官方网站或可靠的源获取`lucene-8.8.1.tgz`压缩包,然后使用`tar`命令进行解压,例如: ``` wget ...

    lucene3.6.1学习

    在学习 Lucene 源码时,理解以下几个关键概念至关重要: 1. **倒排索引**:这是 Lucene 的核心数据结构,它存储了每个术语出现的所有文档及其位置信息,使高效的全文搜索成为可能。 2. **Analyzer**:分析器负责将...

    lucene-codecs-4.4.0.zip

    Lucene的核心功能主要分布在以下几个模块: 1. 分析器(Analyzer):这是Lucene处理文本输入的关键组件,它将用户输入的文本分解成可搜索的词项(Tokens)。分析器可以定制,以适应各种语言和应用场景,例如,英语...

    lucene3.0

    Lucene 3.0是Lucene发展过程中的一个重要里程碑,它在稳定性、性能和功能上都有所提升。这一版本引入了更优化的索引结构,提高了查询速度,并且增强了对多语言的支持。Lucene 3.0还引入了新的API,使得开发者更容易...

    Lucene in action配套源代码

    源代码中可能涵盖以下几个主要方面: 1. **索引构建**:展示了如何使用Lucene来读取和索引文本数据,包括从文件系统、数据库或其他数据源中抽取内容,并将其转换为可供搜索的索引结构。这通常涉及到分析器...

    Lucene.net-4.8.0 -new Bate.rar

    Lucene.Net 4.8.0的源码结构复杂而有序,主要包括以下几个关键组件: - **Index**:实现索引的创建、读取和更新。 - **Search**:提供查询执行和结果排名的相关类。 - **Analysis**:包含了各种分析器的实现。 - **...

    Lucene使用教程

    安装Lucene通常涉及以下几个步骤: 1. **下载**:访问Lucene官方网站下载最新版本的Lucene。 2. **配置环境**:将Lucene的jar包添加到项目的类路径中。 3. **集成开发**:使用IDE(如Eclipse或IntelliJ IDEA)进行...

    lucene4.3 按坐标距离排序

    要实现按坐标距离排序,我们需要以下几个关键概念: 1. **地理坐标表示**:通常,地理位置用经度和纬度来表示。在Lucene中,这些坐标可以被表示为`Point`类型的字段,存储在文档中。 2. **GeoHash**:为了有效地...

Global site tag (gtag.js) - Google Analytics