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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

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

3.2 相似度模型配置

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


fbc9fc0c5c530b56d6ae9292e46b11e33ea94dce


601fa85a7319272f5e4955a46374a713c811f772

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


b0c0bbbf9f3c758ce0c785fdbee13a93349acf26

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


674b9efa61772669f60064b6cd6a3b19cbad25da


2b2189da5b5cfd1241c911e510ce0517f82cdfba

如果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属性。这些属性值的数据类型均为浮点型。下面的代码展示了如何配置相似度模型:


5fe35f570efbe934e9998c920086a7264e6ae5a0

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

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

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


<a href=https://yqfile.alicdn.com/a1fb2e841067261ba298808b038c390c5a5b9bab.png" >
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
28天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
113 0
|
2月前
|
Docker 索引 容器
Elasticsearch跨集群检索配置
Elasticsearch跨集群检索配置
45 1
|
6月前
|
存储 人工智能 自然语言处理
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
|
3月前
|
前端开发 安全 Ubuntu
Elasticsearch安装和配置
Elasticsearch安装和配置
116 0
|
2月前
|
数据安全/隐私保护
spring-boot-starter-data-elasticsearch es带x-pack后台配置
spring-boot-starter-data-elasticsearch es带x-pack后台配置
24 0
|
4月前
|
NoSQL Java API
SpringBoot【ElasticSearch集成 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(依赖+配置+增删改查测试源码)推荐使用
SpringBoot【ElasticSearch集成 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(依赖+配置+增删改查测试源码)推荐使用
57 0
|
4月前
|
数据可视化 Java 关系型数据库
Elasticsearch【环境搭建 02】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用举例)
Elasticsearch【环境搭建 02】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用举例)
86 0
|
4月前
|
Java API
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
78 0
|
5月前
|
存储 搜索推荐 Java
Elasticsearch的配置学习笔记
Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的。
40 0
|
6月前
|
监控 容器
Filebeat配置顶级字段Logstash在output输出到Elasticsearch中的使用
Filebeat配置顶级字段Logstash在output输出到Elasticsearch中的使用
141 0

热门文章

最新文章