学习Lucene是为了更深入搜索,学习Lucene4是为了弄懂ES中没有解释的疑问,等看完Lucene,才发现,搜索的核心原来都是Lucene,Elasticsearch只不过是包在Lucene外面的一层皮。
Lucene是一个搜索引擎包,它并非一个像tomcat一样的产品。它衍生出了solr和elasticsearch。当然,我学习的是后者。solr是apache孵化的一个搜索引擎。
马XX说过,学习是一个概念,判断,推理的过程,现在想想,老人家说的很多话,还真是那么回事。下面就是Lucene4中的一些基础核心概念。
索引(Index)
对应一个倒排表,一个检索的基本单位。在lucene中就对应一个目录。
段(Segment)
一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。段是索引数据存储的单元。
文档(Document)
•文档是我们建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。
•新添加的文档是单独保存在一个新生成的段中,随着段的合并,不同的文档合并到同一个段中。
域(Field)
•一篇文档包含不同类型的信息,可以分开索引,比如标题,时间,正文,作者等,都可以保存在不同的域里。
•不同域的索引方式可以不同。
词(Term)
词是索引的最小单位,是经过词法分析和语言处理后的字符串。
词相同,但域不同被认为是两个不同的词,也就是说词是词根和域名的一个组合。
词向量(Term Vector)
又称文档向量(document vector),由词文本和词频率组成。
语义树
语义树是构成搜索处理的一个中间结果,搜索时,会生成语义树,然后再进行搜索。
权重(Term Weight)
计算分值时使用的主要指标,指词(Term)在文档中的分值,脱离文档单独说某个词的权重是没有意义的。
Term Frequency (tf):即此Term 在此文档中出现了多少次。tf 越大说明越重要。
Document Frequency (df):即有多少文档包含次Term。df 越大说明越不重要 。
Posting
一般情况下,将一个词条所索引的文档(一般用文档编号表示)称之为 Posting,那么一个词条索引的多个文档就称之为 Posting-list。这个词我们在看java api的时候会经常看到
Payload
即词条 (Term) 的元数据或称载荷, Lucene 支持用户在索引的过程中将词条的元数据添加的索引库中,同时也提供了在检索结果时读取 Payload 信息的功能。Payload 的诞生为用户提供了一种可灵活配置的高级索引技术,为支持更加丰富的搜索体验创造了条件。
倒排表(Inverted Indexing)
倒排表是Lucene索引采用的一套数据结构,这种结构以词为中心,能够快速找到包含该词根的文档。因为跟正常的遍历文档检索采用的方法相反,采用先匹配词,在去找包含词的文档,因此叫倒排表。倒排表是一种数据结构,lucene的数据文件一起构成了一张大的倒排表,而不是具体的某文件存储的倒排结构。
文档编号(Document Number)
Lucene内部通过文档编号索引文档。这个编号在一个段内部唯一,一个段的第一个文档的编号为0,依次递增。不过这个编号仅用于lucene内部使用,而且这个编号在段合并的时候会发生改变。如果需要在段外部使用,必须对这个编号进行唯一性重新编排,确保一个文档在更大的范围也是唯一的。重新编排的一个实现方法是,基数+段内序号的方法。比如有两个段,每个段里面都有5个文档,则第一个段的文档编号=0+段内编号,第二个段的文档编号=5+段内编号。
请支持原创:
http://donlianli.iteye.com/blog/1976024
更多elasticsearch,请参考:http://www.iteye.com/blogs/subjects/elasticsearch-tutor
对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问 我的空间
相关推荐
《深入理解Lucene 4.4.0代码库与Java核心技术》 在IT领域,Lucene是一个非常重要的开源全文搜索引擎库,它为开发者提供了强大的文本分析、索引和搜索功能。这里我们关注的是Lucene的4.4.0版本,通过解压"lucene-...
5. **开发实践**: 在实际开发中,除了直接使用Lucene-core外,还可能需要结合其他模块,如Solr或Elasticsearch,它们是基于Lucene构建的更高级的搜索服务器,提供了更多的管理和部署功能。 6. **学习路径**: 学习...
《从Lucene到Elasticsearch:Lucene6.0,Elasticsearch 5.4》是一本深入探讨全文检索技术的书籍,旨在帮助读者理解从基础的搜索引擎库Lucene到分布式搜索引擎Elasticsearch的过渡。书中涵盖了从核心技术概念到实际...
Elasticsearch是一个开源的搜索引擎,它构建于Apache Lucene之上,旨在提供一个快速、可靠和可扩展的搜索服务。Spring Data Elasticsearch允许开发者使用Spring框架的核心概念,以更简洁的方式操作Elasticsearch,...
分享一套完整版视频课程——分布式搜索引擎Elasticsearch开发实战基础篇 (ElasticSearch、ELK、搜索引擎、Lucene),本教程旨在带领大家进入搜索引擎领域,从无到有,深入浅出的讲解了什么是搜索引擎,搜索引擎的...
- **构建搜索引擎**:结合 Lucene 和其他工具(如 Solr 或 Elasticsearch)构建企业级搜索解决方案。 - **性能调优**:通过调整索引设置、缓存策略等提高搜索速度和响应时间。 **2. 实战案例** - **电子商务网站**...
1. **Elasticsearch简介**:Elasticsearch是一款开源的全文搜索引擎,它基于Lucene构建,提供分布式、实时、可扩展的数据存储和搜索解决方案。Elasticsearch以其高效、灵活和强大的搜索功能而受到广泛应用。 2. **...
Elasticsearch-深入理解索引原理 Elasticsearch 中索引(Index)的概念是非常重要的,它是 Elasticsearch 存储数据的基本单元。索引是一个具有类似特性的文档的集合,类比传统的关系型数据库领域来说,索引相当于 ...
本文将深入探讨这个压缩包中的核心概念,包括Elasticsearch、大数据处理、全文检索以及它如何与地理空间数据相结合。 首先,Elasticsearch是一款极其强大的开源搜索引擎,基于Lucene构建,具备分布式、实时的搜索和...
Elasticsearch(简称ES)是一款强大的开源分布式全文搜索引擎,基于Lucene库,但提供了更高级别的API和管理功能。它被广泛应用于日志分析、实时监控、数据搜索等领域,是现代数据分析体系中不可或缺的一部分。本资料...
《使用Lucene构建内存搜索索引的深度解析》 在当今大数据时代,高效的数据检索技术变得至关重要。...同时,结合其他数据持久化技术,如HBase或Elasticsearch,可以在保持高速检索的同时,兼顾数据的持久性和可靠性。
- **Elasticsearch**:也是基于Lucene,提供了分布式、RESTful风格的搜索和分析引擎。 - **Spring Data**:与Spring框架的集成,简化了在Java应用中使用Lucene的过程。 5. **学习和开发** - **官方文档**:...
深入研究这个代码,我们可以了解其内部工作原理,如何集成到Elasticsearch中,以及如何自定义嵌入向量模型和相似度计算方法。 总结来说,这个插件结合了Python的灵活性和Elasticsearch的高性能,利用机器学习的嵌入...
在“day05-Elasticsearch01day05-Elasticsearch01”这个主题中,我们可以深入探讨Elasticsearch的基础概念、核心特性以及常见应用场景。 一、Elasticsearch基础 1. 数据模型:Elasticsearch基于Lucene构建,使用倒...
9. **扩展性**:Lucene本身只关注搜索的核心功能,但它可以与其他库如Solr、Elasticsearch等结合,以提供更高级的功能,如集群管理、分布式搜索、复杂的聚合分析等。 总的来说,Lucene是一个强大而灵活的全文检索...
在本文中,我们将深入探讨Laravel开发中的一个重要组件——Laravel Scout,以及它与Elasticsearch集成的使用方法。Laravel Scout 是一个轻量级的搜索解决方案,它为 Laravel 应用程序提供了一种优雅的方式来实现全文...
总的来说,"day07-Elasticsearch03"的学习将带你走进Elasticsearch的世界,掌握其基本概念、安装配置、数据操作和集群管理,为后续深入使用和开发基于Elasticsearch的应用奠定坚实基础。通过实践和探索,你可以发掘...
9. **分布式搜索(Distributed Search)**:通过Solr或Elasticsearch等项目,Lucene可以扩展到分布式环境中,处理大量数据和高并发请求。 10. **内存和磁盘管理(Memory and Disk Management)**:Lucene在内存和...
根据提供的信息,我们可以深入探讨Elasticsearch 7.2.0的相关知识点,包括其更新特点、功能改进以及在实际应用中的优势。 ### Elasticsearch 7.2.0简介 Elasticsearch是一款基于Lucene的分布式搜索与分析引擎,...
- **集成其他库**:例如Solr、Elasticsearch等,提供更丰富的功能和更易用的API。 通过研究和分析"Lucene-2.9.3-src.zip",我们可以深入了解搜索引擎的工作原理,学习如何在项目中应用这些知识,同时也可以为未来...