首页 > 其他分享 > Elasticsearch搜索功能的实现(三)-- 相似度

Elasticsearch搜索功能的实现(三)-- 相似度

时间:2023-04-18 23:23:50浏览次数:42  
标签:field similarity -- index BM25 boolean 搜索 Elasticsearch type

一、开箱即用的相似度配置

Elasticsearch允许您配置文本评分算法或每个字段的相似度。相似度设置提供了一种选择缺省BM25之外的文本相似度算法的简单方法,例如:boolean

只有基于文本的字段类型(如文本和关键字)支持此配置。

唯一可以开箱即用的相似之处,无需任何进一步 配置包括:

  1. BM25
    Okapi BM25 algorithm,在 Elasticsearch 和 Lucene 中默认使用的算法。

  2. boolean
    一个简单的布尔相似性,在不需要全文排名时使用 并且分数应仅基于查询词是否匹配。 布尔相似性为术语提供与其查询提升相等的分数。

首次创建字段时可以在字段级别设置, 如下:similarity

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "default_field": {  //default_field BM25
        "type": "text"
      },
      "boolean_sim_field": {
        "type": "text",
        "similarity": "boolean"  // boolean_sim_field boolean
      }
    }
  }
}

image

image

二、自定义相似度配置

创建方法

PUT /index
{
  "settings": {
    "index": {
      "similarity": {
        "my_similarity": {
          "type": "DFR",
          "basic_model": "g",
          "after_effect": "l",
          "normalization": "h2",
          "normalization.h2.c": "3.0"
        }
      }
    }
  }
}

创建映射

PUT /index/_mapping
{
  "properties" : {
    "title" : { "type" : "text", "similarity" : "my_similarity" }
  }
}

已存在的相似度算法

BM25、DFR、DFI、IB、LM Dirichlet 可根据相关参数进行配置

如BM25:

参数 说明
k1 控制非线性项频归一化(饱和)。缺省值为1.2。
b 控制文档长度规范化tf值的程度。缺省值为0.75。
discount_overlaps 确定计算范数时是否忽略重叠令牌(位置增量为0的令牌)。默认情况下,这是真的,这意味着在计算规范时不计算重叠令牌。

还可通过脚本方式指定算法

PUT /index
{
  "settings": {
    "number_of_shards": 1,
    "similarity": {
      "scripted_tfidf": {
        "type": "scripted",
        "script": {
          "source": "double tf = Math.sqrt(doc.freq); double idf = Math.log((field.docCount+1.0)/(term.docFreq+1.0)) + 1.0; double norm = 1/Math.sqrt(doc.length); return query.boost * tf * idf * norm;"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "field": {
        "type": "text",
        "similarity": "scripted_tfidf"
      }
    }
  }
}

标签:field,similarity,--,index,BM25,boolean,搜索,Elasticsearch,type
From: https://www.cnblogs.com/gdwkong/p/17331609.html

相关文章

  • 降雨预报模型和洪水预报模型的区别
    降雨预报模型是预测降雨,如WRF模型。洪水预报模型是预测洪水,如径流预报模型、新安江模型等。参考1:https://www.bilibili.com/video/BV15R4y1V7uu/参考2:https://wenku.baidu.com/view/74f4b21700d8ce2f0066f5335a8102d276a261c2.html......
  • 4月18日set与map的学习
    之前学习过string,list,vector,deque,和两种适配器queue和stack,这些都是线性表的数据结构;而今天学习的map和set他们的底层是二叉搜索树,或者平衡二叉搜索树。首先是set她没有键值对,并且不能出现重复元素,比如当插入两个一时,他只会插入一个一,所以可以用作数组去重。 比如上图当插......
  • 带约束条件的运筹规划问题求解(模拟退火算法实现)
    0.写在前面超级简单的模拟退火算法实现ε٩(๑>₃<)۶з搭配最简单的线性规划模型进行讲解!但是如果需要的话可以直接修改编程非线性问题哦(´つヮ⊂︎)1.模型描述及处理1.1线性规划模型\[max\,f(x)=10x_1+9x_2\]\(s.t.\)\[6x_1+5x_2\leq{60}\tag{1}\]\[10x_1+20x_2\leq{......
  • 方法的定义和使用
    方法什么是方法是语句的集合,它们在一起执行一个功能一个方法只完成一个功能,这样利于我们后期的拓展方法包含于类或对象中方法的命名规则:首字母小写,后面采用驼峰原则方法的定义及调用方法的定义一个方法包含一个方法头和一个方法体修饰符:public,static等返回值类型:voi......
  • Elasticsearch搜索功能的实现(二)--Elasticsearch中的核心概念与DSL
    一、Elasticsearch中的核心概念1、索引index一个索引就是一个拥有几分相似特征的文档的集合。比如说,可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、......
  • [心路历程]从事自媒体行半年心路历程以及未来规划
    2022年9月13号入职公司10月1号开始正式更新视频总的来说这半年基本保持日更的状态,但明显能感觉自己处于一个瓶颈期需要一个提升自己后期能力水平的学习过程。但半年时间导致我抛弃了很多良好的学习习惯。例如坚持每天学习,记录学习笔记。但是现在开始需要逐步捡回当初学习的......
  • 团队冲刺个人博客2
    今天的工作比较多,上午满课,下午上的python课完成了python的实验报告,学到一些python的知识.下午和晚上一直在完善科技政策查询系统的作业,并根据老师的要求一直在改代码,下面附上一部分的代码test.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>......
  • 人脸识别 进度5
    赵胜府:今天我修复了昨天传参报错的问题,改善了页面乱码的问题,实现了功能流畅运行,完成了组长交给的任务,遇到的问题,session传值问题,我不会多值传参,只会一个,不过好在可以改。王垚基:今天:完成了调用百度的api接口,准备完成学生人脸录入功能问题:获取**access_token**的时候出错张旭彤:写......
  • 【THM】Python Basic(Python基础)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/pythonbasics本文相关内容:使用基于网络的代码编辑器,学习Python的基础知识,并将你的知识付诸实践。Python简介在本文中,你将亲身体验并学习脚本编程语言Python,学会编程允许你创建一些安全工具以及创建脚本,这将帮助你......
  • scrum项目冲刺_day5会议总结
    今日团队任务:图片转excel(5天)前端开发(需团队风格统一)调用接口(后端),json数据->excel前后端连接           任烁玚(进行中)            图片转html(8天)前端开发(需团队风格统一)图片转为pdf(存储)pdf转html(调用接口)[html存储到数据库]前后台数据同......