[img][/img]刚开始对lucene很好奇,于是自己就买本书来看看,学了2天大概上掌握了一点lucene的原理,在这里总结一下,以免时间长了忘记,并且可以给需要的人提供以下参考!
刚开始学习学习一门技术最重要的就是理解它的原理,还有它的API,只有大体上理解这些以后才能更好的学习它!
(1)lucene是一个全文搜索引擎,是apache的一个顶级项目,在国内应用也很广泛!
(2)lucene建立索引文件的简单原理和算法
(a) 比如有两个文本文件 1.txt 里面内容为 He lived in beijing另一个文件为2.txt 里面内容为
he is my friend
(b)lucene在建立索引文件之前 需要利用分词器对文件内容等进行分词 比如第一个文件的内容就被分为
[ he][live][beijing]
第二个文件被分为
[he ][is][my][friend]
(因为 in 通常无意义所以就过滤掉了, 同时 live 可以把包含lived lives的文章也给找出来 所以 就把 lived 分词为live ,同时小写的也可以把包含大写的文章找出来 所以就把大写的分词为小写的 比如 He 分词为 he)
这个时候每一个文本分词出来的文件放在一个内存中的lucene中的Document对象中,最好把多个内存中的Document
合并成一个segment上!
同时lucene是倒排序的索引,最好结构大概就是这样:
刚开始对lucene很好奇,于是自己就买本书来看看,学了2天大概上掌握了一点lucene的原理,在这里总结一下,以免时间长了忘记,并且可以给需要的人提供以下参考!
刚开始学习学习一门技术最重要的就是理解它的原理,还有它的API,只有大体上理解这些以后才能更好的学习它!
(1)lucene是一个全文搜索引擎,是apache的一个顶级项目,在国内应用也很广泛!
(2)lucene建立索引文件的简单原理和算法
(a) 比如有两个文本文件 1.txt 里面内容为 He lived in beijing另一个文件为2.txt 里面内容为
he is my friend
(b)lucene在建立索引文件之前 需要利用分词器对文件内容等进行分词 比如第一个文件的内容就被分为
[ he][live][beijing]
第二个文件被分为
[he ][is][my][friend]
(因为 in 通常无意义所以就过滤掉了, 同时 live 可以把包含lived lives的文章也给找出来 所以 就把 lived 分词为live ,同时小写的也可以把包含大写的文章找出来 所以就把大写的分词为小写的 比如 He 分词为 he)
这个时候每一个文本分词出来的文件放在一个内存中的lucene中的Document对象中,最好把多个内存中的Document
合并成一个segment上!
同时lucene是倒排序的索引,最好结构大概就是这样:
关键字
文章号
出现频率
出现位置
[img]
[/img]
(因为是lucene按照字母顺序就行排序的)
(2)Document可以简单理解为一个文本文件(但实际上不是啊)
(3)Field的理解 Field 可以理解为Map类型的 它就是一些属性的集合,比如 title ,body,time 等
具体可以看Field的类:
public final class Field extends AbstractField implements Fieldable, Serializable {
/** Specifies whether and how a field should be stored. */
public static final class Store extends Parameter implements Serializable {
private Store(String name) {
super(name);
}
public Field(String name, String value, Store store, Index index) {
this(name, value, store, index, TermVector.NO);
}
public Field(String name, String value, Store store, Index index, TermVector termVector) {
this(name, true, value, store, index, termVector);
}
有很多个构造函数我这里仅仅列两个
其中segmen里面包含Document,document里面包含Field,Field里面包含term !
- 大小: 14.9 KB
分享到:
相关推荐
lucene&solr原理分析,lucene搜索引擎和solr搜索服务器原理分析。
**Lucene索引结构原理** Lucene是Apache软件基金会的开放源代码全文搜索引擎库,它为Java开发人员提供了强大的文本搜索功能。理解Lucene的索引结构原理对于优化搜索性能和设计高效的搜索应用至关重要。 首先,我们...
【Lucene 索引结构原理】 Lucene 是一个高性能、全文检索的开源库,它主要处理非结构化的数据,如邮件、Word 文档等。与传统的数据库不同,Lucene 更专注于文本的检索,而非存储和管理结构化数据。本文将深入探讨...
**Lucene原理详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单但功能强大的API,用于索引和搜索文本数据,使得开发者可以轻松地在...
在 Lucene 3.0 版本中,其核心功能和设计原理依然沿袭了之前的版本,但同时也进行了一些优化和改进,使得搜索性能更加高效,功能更加完善。 1. **索引构建**:Lucene 的工作始于文档的索引构建。在这个过程中,它将...
Lucene的目标是为软件开发人员提供简单易用的工具包,方便地在目标系统中实现全文搜索功能或构建一个完整的全文搜索引擎。 Lucene的主要优点包括: 1. 索引文件格式独立于应用平台:Lucene定义了一套以8位字节为...
**LUCENE搜索引擎基本工作原理** Lucene是一个开源的全文搜索引擎库,被广泛应用于构建复杂的搜索引擎系统。它的设计目标是高效、灵活且可扩展。理解Lucene的工作原理有助于开发人员更好地利用这一强大的工具。 **...
一个简单的Lucene应用实例是搜索文本文档。例如,开发者可以创建一个索引目录,然后指定一个包含文本文档的数据目录。使用`Analyzer`(如CJKAnalyzer)对文本进行分析,通过`IndexWriter`将文档内容写入索引。这样,...
本文将对Lucene的基本原理及其实现的代码进行分析。 首先,全文检索的基本原理包括索引的创建与搜索过程。在索引创建过程中,文档首先经过分词组件Tokenizer拆分成词元Token,然后经过语言处理组件...
通过深入理解Lucene的工作原理,并结合Analyzer的定制、查询优化策略以及性能调优,开发者可以构建出满足特定需求的高性能搜索引擎。同时,Lucene也提供了丰富的API,便于与其他系统集成,如Solr和Elasticsearch等,...
**Lucene全文索引原理** Lucene是一款开源的全文搜索引擎库,由Apache软件基金会开发,广泛应用于各种信息检索系统。它的核心功能是构建高效的全文索引,并提供快速的文本搜索能力。Lucene的工作原理主要涉及以下几...
《C# Lucene.net原理与代码分析加强版》是一份深度解析Lucene.net搜索引擎库的文档,涵盖了全文检索的基本原理、Lucene的总体架构、索引文件格式以及索引过程和段合并等核心主题,旨在为开发人员提供深入理解Lucene...
### Lucene原理与代码分析概览 #### 一、全文检索基本原理 全文检索是一种能够检索文档中任意词语的信息检索技术。与简单的关键词查询不同,全文检索不仅关注文档标题、元数据,还深入到文档的实际内容中去。这种...
《Lucene原理与代码分析》深入探讨了几乎最新版本的Lucene的工作机制和代码实现细节,为理解全文搜索引擎的核心技术提供了宝贵的资源。以下是对该文件关键知识点的详细解析: ### 全文检索的基本原理 #### 总论 ...
**基于Lucene的简单搜索引擎构建详解** Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索库,提供了一个强大的信息检索引擎框架。这个压缩包“基于lucene 的简单搜索引擎.rar”很可能是为了...
《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...
标题:“整理Lucene.net一些简单属性说明” 在信息技术领域,搜索引擎是不可或缺的一部分,而Lucene.net作为Apache Lucene的.NET版本,为开发者提供了一套强大的全文搜索功能。这个文档将对Lucene.net的一些核心...
《Lucene原理与代码分析》全面解析 Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护,广泛应用于各种信息检索系统中。它主要使用Java语言编写,因此在Java开发环境中应用尤为广泛。本篇文章将深入...