《深入理解ElasticSearch》——3.2 相似度模型配置

3.2 相似度模型配置

我们已经知道如何为索引中各个字段配置相似度模型了,现在来了解如何按需求配置它们。事实上,这相当容易。我们所要做的就是,在索引配置相关部分提供相应的相似度模型配置信息,就像下面的代码这样(本范例存储在posts_custom_similarity.json文件中):

尽管用户可以配置多个相似度模型,但此时还是先回到前面的范例。我们定义了一个名为mastering_similarity的新的相似度模型,它基于默认的TF/IDF相似度模型。接着将它的discount_overlaps属性值设置为false,指定该相似度模型用于name字段。关于不同相似度模型都有哪些属性本章后面会详细描述,现在,我们先讨论如何改变ElasticSearch的默认相似度模型。
3.2.1 选择默认的相似度模型
为了设置默认的相似度模型,我们需要提供关于一个名为default的相似度模型的配置信息。例如,要使用mastering_similarity模型作为默认的相似度模型,需要将前面的配置文件修改为如下形式(该范例存储在posts_default_similarity.json文件中):

虽然所有的相似度模型都全局使用了query norm和coord这两个评分因子(详见2.1节),但是它们又从default相似度模型的配置中移除出去了。然而,ElasticSearch允许用户根据需要改变这种状况。为了实现该目的,用户需要另外定义一个名为base的相似度模型,它的定义方式与前面的范例如出一辙,将相似度模型的名字由default改为base即可。参考下面的代码(该范例代码保存在posts_base_similarity.json文件中):

如果base相似度模型出现在索引配置中,那么当ElasticSearch使用其他相似度模型计算文档得分时,会使用base相似度模型来计算query norm和coord评分因子。
3.2.2 配置被选用的相似度模型
每个新增的相似度模型都可以根据用户需求进行配置,而ElasticSearch还允许用户不加配置地直接使用default和BM25相似度模型。因为它们是预先配置好的,而DFR和IB模型则需要进一步配置才能使用。现在,我们来看看各个相似度模型都提供了哪些可配置的属性。
配置TF/IDF相似度模型
在TF/IDF相似度模型案例中,我们可以只设置一个参数:discount_overlaps属性,其默认值为true。默认情况下,位置增量(position increment)为0(即该词条的position计数与前一个词条相同)的词条在计算评分时并不会被考虑进去。如果在计算文档时需要考虑这类词条,则需要将相似度模型的discount_overlaps属性值设置为false。
配置Okapi BM25相似度模型
在Okapi BM25相似度模型案例中,有如下参数可供配置:

  • k1:该参数为浮点数,控制饱和度(saturation),即词频归一化中的非线性项。
  • b:该参数为浮点数,用于控制文档长度对词频的影响。
  • discount_overlaps :与TF/IDF相似度模型中的discount_overlaps参数作用相同。

配置DFR相似度模型
在DFR相似度模型案例中,有如下参数可供配置:

  • basic_model:该参数值可设置为be、d、g、if、in和ine。
  • after_effect:该参数值可设置为no、b和l。
  • normalization :该参数值可设置为no、h1、h2、h3和z。

如果normalization参数值不是no,则需要设置归一化因子。归一化因子的设置依赖于所选的normalization参数值。参数值为h1时,使用normalization.h1.c属性;参数值为h2时,使用normalization.h2.c属性;参数值为h3时,使用normalization.h3.c属性;参数值为z时,使用normalization.z.z属性。这些属性值的数据类型均为浮点型。下面的代码展示了如何配置相似度模型:

配置IB相似度模型
在IB相似度模型案例中,有如下参数可供配置:

  • distribution:该参数值可设置为ll或spl。
  • lambuda:该参数值可设置为df或tff。

此外,IB模型也需要配置归一化因子,它的配置方式与DFR模型相同,这里不再赘述。下面的代码展示了如何配置IB相似度模型:

https://yqfile.alicdn.com/a1fb2e841067261ba298808b038c390c5a5b9bab.png" >

时间: 2024-09-15 08:10:00

《深入理解ElasticSearch》——3.2 相似度模型配置的相关文章

《深入理解Elasticsearch(原书第2版)》一导读

前 言 欢迎来到Elasticsearch的世界并阅读本书第2版.通过阅读本书,我们将带领你接触与Elasticsearch紧密相关的各种话题.请注意,本书不是为初学者写的.笔者将本书作为<Elasticsearch Server, Second Edition>的续作和姊妹篇.相对于<Elasticsearch Server>,本书涵盖了很多新知识,不过你偶尔也可以在本书中发现一些引自<Elasticsearch Server>的内容. 本书将探讨与Elasticse

《深入理解ElasticSearch》——导读

前 言 Preface 欢迎来到ElasticSearch的世界.通过阅读本书,我们将带你接触与ElasticSearch紧密相关的各种话题.本书会从介绍Apache Lucene及ElasticSearch的基本概念开始.即使读者熟悉这些知识,简略的介绍也是很有必要的,掌握背景知识对于全面理解集群构建.索引文档.搜索这些操作背后到底发生了什么至关重要. 之后,读者将学习Lucene的评分过程是如何工作的,如何影响评分,以及如何让ElasticSearch选择不同的评分算法.本书也将介绍什么是查

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

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

【区块链之技术进阶】从技术现实理解区块链:基于SQL模型创建BQL

在前面的两篇文章里,咱们看到了知乎上的两位妹纸关于区块链的理解,一位从金融角度切入同时兼顾了技术概况,另一位呢则偏重于技术层面(一言不合就放代码).通过两位妹子(萌萌哒)的叙述,想必大家对于区块链有了更深的理解,并且巧合的是两位妹子都不约而同提到了创世区块链,这在咱们之前的文章中很少提到的.(是不是妹纸写文章更细心,这我就不知道了...)读完上一篇文章中的妹子画的图大家是不是对于"区块分叉"还有"共识攻击"的技术原理更加理解了呢?毕竟图中有妹子的自拍... 本文是[

《深入理解Elasticsearch(原书第2版)》一第1章Elasticsearch简介1.1 Apache Lucene简介

第1章 Elasticsearch简介 我们希望读者通过阅读本书来获取和拓展关于Elasticsearch的基本知识.假设读者已经知道如何使用Elasticsearch进行单次或批量索引创建,如何发送请求检索感兴趣的文档,如何使用过滤器缩减检索返回文档的数量,以及使用切面/聚合(faceting/aggregation)机制来计算数据的一些统计量.不过,在接触Elasticsearch提供的各种令人激动的功能之前,希望读者能对Apache Lucene有一个快速的了解,因为Elasticsear

haha-关于点击流 基于用户兴趣度模型

问题描述 关于点击流 基于用户兴趣度模型 当用户浏览网页时的一些操作,比如 (1)页面标记行为:增加书签.删除书签.保存页面.打印页面. (2)页面操作行为:复制.粘贴.剪切.拉动滚动条.点击链接.移动鼠标. (3)重复行为:重复访问同一页面. 怎样通过程序获取到这些信息,或者是有什么API接口函数可以用

《深入理解ElasticSearch》——第1章1.1 Apache Lucene简介

第1章 ElasticSearch简介我们希望读者通过阅读本书能获取和拓展关于ElasticSearch的基本知识,并假设读者已经知道如何使用ElasticSearch进行单次或批量索引创建,如何发送请求检索感兴趣的文档,如何使用过滤器缩减检索返回文档的数量,以及使用切面/聚合(faceting/aggregation)机制来计算数据的一些统计量.不过,在接触ElasticSearch提供的各种令人激动的功能之前,仍然希望读者能对Apache Lucene有一个快速了解,因为ElasticSea

《深入理解ElasticSearch》——2.9 小结

2.9 小结 在本章中,我们了解了Apache Lucene是如何工作的,查询改写是什么,如何使用二次评分影响文档的评分.接下来,了解了如何在一个HTTP请求中发送多个查询和实时读取请求,以及如何对包含多值字段和嵌套文档的数据进行排序.另外,还介绍了数据更新 API和使用过滤器来优化查询的方法.最后,学习了如何使用过滤器和作用域来缩减或扩大切面计算返回的文档集.下一章中,我们将学习如何选择不同的评分公式,以及在索引期选择不同的倒排索引格式(postings format),了解多语言数据处理和事

《深入理解Elasticsearch(原书第2版)》——第1章 Elasticsearch简介 1.1 Apache Lucene简介

第1章 Elasticsearch简介 我们希望读者通过阅读本书来获取和拓展关于Elasticsearch的基本知识.假设读者已经知道如何使用Elasticsearch进行单次或批量索引创建,如何发送请求检索感兴趣的文档,如何使用过滤器缩减检索返回文档的数量,以及使用切面/聚合(faceting/aggregation)机制来计算数据的一些统计量.不过,在接触Elasticsearch提供的各种令人激动的功能之前,希望读者能对Apache Lucene有一个快速的了解,因为Elasticsear