《深入理解ElasticSearch》——第3章 底层索引控制3.1 改变Apache Lucene的评分方式

简介:

本节书摘来自华章计算机《深入理解ElasticSearch》一书中的第3章,第3.1节,作者:[美] 拉斐尔·酷奇(Rafa Ku) 马雷克·罗戈任斯基(Marek Rogoziński)更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第3章 底层索引控制

在上一章,我们了解了Apache Lucene如何为文档评分,什么是查询重写,如何利用ElasticSearch 0.90中的新特性,即二次评分来影响搜索返回文档的得分。同时我们也讨论了如何使用单个HTTP请求发送多个查询或准实时读取请求,以及如何对数据进行基于多值字段或嵌套文档的排序。除此之外,还介绍了如何使用数据更新 API以及如何通过使用过滤器优化查询。最后,我们介绍了如何通过使用过滤器和作用域来缩减或增加用于切面计算的文档数量。本章涵盖以下内容:

  • 如何使用不同的评分公式及其特性。
  • 如何使用不同的倒排表格式及其特性。
  • 如何处理准实时搜索、实时读取,以及搜索器重新打开之后发生的动作。
  • 深入理解多语言数据处理。
  • 配置搜索事务日志以满足应用需求,并查看它对部署的影响。
  • 段合并、各种索引合并策略和合并调度方式。

3.1 改变Apache Lucene的评分方式

自2012年Apache Lucene 4.0发布以后,用户便可以改变默认的基于TF/IDF的评分算法了,这是因为Lucene的API做了一些改变,使得用户能轻松地修改和扩展该评分公式。然而,这并不是Lucene在改变文档评分计算方面仅有的改进。Lucene 4.0提供了更多的相似度模型,从而允许我们采用不同的评分公式。本节中,我们将深入了解Lucene 4.0带来了哪些变化以及如何整合这些特性至ElasticSearch中。
3.1.1 可用的相似度模型
前面已经说过,Apache Lucene 4.0之前,除了最原始和默认的相似度模型以外,TF/IDF模型也是可用的。详细内容请参见2.1节。
而现在,又新增了以下三种相似度模型可供使用:
Okapi BM25模型:这是一种基于概率模型的相似度模型,可用于估算文档与给定查询匹配的概率。为了在ElasticSearch中使用它,你需要使用该模型的名字,BM25。一般来说,Okapi BM25模型在短文本文档上的效果最好,因为这种场景中重复词项对文档的总体得分损害较大。
随机偏离(Divergence from randomness)模型:这是一种基于同名概率模型的相似度模型。为了在ElasticSearch中使用它,你需要使用该模型的名字,DFR。一般来说,随机偏离模型在类似自然语言的文本上效果较好。
基于信息的(Information based)模型:这是最后一个新引入的相似度模型,与随机偏离模型类似。为了在ElasticSearch中使用它,你需要使用该模型的名字,IB。同样,IB模型也在类似自然语言的文本上拥有较好的效果。
前面提到的相似度模型所涉及的数学知识已经远远超出本书的讨论范围。如果想深入了解这些模型以及拓展相关知识,请参考http:// en.wikipedia.org/wiki/Okapi_BM25(Okapi BM25模型),以及http://terrier.org/docs/v3.5/dfr_description.html(随机偏离模型)。
3.1.2 为每字段配置相似度模型
自ElasticSearch 0.90以后,用户可以在映射中为每字段设置不同的相似度模型。例如,假设我们有下面这个映射,用于索引博客的回帖(该映射存储在posts_no_similarity.json文件中):


16a77035098db25c19906550422f6d1dd7cd2f6d

我们希望的是,在name字段和contents字段中使用BM25相似度模型。为了实现这个目的,我们需要扩展当前的字段定义,即添加similarity字段,并将该字段的值设置为相应的相似度模型的名字。修改后的映射(该映射存储在posts_similarity.json文件中)如下所示:


1dc31aac611e46a245cf3d40b2314239a1a3e7ea

以上更改就足够了,并不需要额外的信息。经过前面的处理,Apache Lucene将在搜索期在name字段和contents字段上使用BM25相似度模型来计算文档得分。
对于随机偏离模型和基于信息的相似度模型,我们需要配置一些额外属性,用于控制这些相似度模型的行为。相关知识后面会详细讲述。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
存储 自然语言处理 BI
从 Elasticsearch 到 Apache Doris 腾讯音乐内容库升级,统一搜索分析引擎,成本直降 80%
实现写入性能提升 4 倍、使用成本节省达 80% 的显著成效
671 1
从 Elasticsearch 到 Apache Doris 腾讯音乐内容库升级,统一搜索分析引擎,成本直降 80%
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
356 5
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
283 3
|
存储 SQL Apache
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
本文将从技术选型的视角,从开放性、系统架构、实时写入、实时存储、实时查询等多方面,深入分析 Apache Doris 与 Elasticsearch 的能力差异及性能表现
1580 17
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
1034 3
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
存储 缓存 监控
优化Elasticsearch 索引设计
优化Elasticsearch 索引设计
345 5
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
395 4
|
测试技术 API 开发工具
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
281 8
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
332 3
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入

热门文章

最新文章

推荐镜像

更多