27.四种常见的相关度分数优化方法

对相关度评分进行调节和优化的常见的4种方法

一、query-time boost,

如果认为某一个term的比较重要,就把这个term的权重设的大一点,也就是把boost的值设的大一点。

GET /forum/article/_search

{

"query": {

"bool": {

"should": [

{

"match": {

"title": {

"query": "java spark",

"boost": 2

}

}

},

{

"match": {

"content": "java spark"

}

}

]

}

}

}

2、重构查询结构

重构查询结构就是优化查询语句。重构查询结果,在es新版本中,影响越来越小了。一般情况下,没什么必要的话,不用也行。

GET /forum/article/_search

{

"query": {

"bool": {

"should": [

{

"match": {

"content": "java"

}

},

{

"match": {

"content": "spark"

}

},

{

"bool": {

"should": [

{

"match": {

"content": "solution"

}

},

{

"match": {

"content": "beginner"

}

}

]

}

}

]

}

}

}

三、negative boost

1、搜索包含java,不包含spark的doc,这样只要包含spark的doc都会直接排除,

2、搜索包含java,尽量不包含spark的doc,如果包含了spark,不会直接排除掉这个doc,而只是将这个doc的分数降低。包含了negative term的doc,分数乘以negative boost,从而使这个doc的分数降低

1、搜索包含java,并且不包含spark的doc

GET /forum/article/_search

{

"query": {

"bool": {

"must": [

{

"match": {

"content": "java"

}

}

],

"must_not": [

{

"match": {

"content": "spark"

}

}

]

}

}

}

2、搜索包含java,尽量不包含spark的doc

GET /forum/article/_search

{

"query": {

"boosting": {

"positive": {

"match": {

"content": "java"

}

},

"negative": {

"match": {

"content": "spark"

}

},

"negative_boost": 0.2

}

}

}

四、constant_score

如果压根儿就不需要相关度评分,直接就用constant_score(可以加filter进行过滤),这样所有的doc分数都是1,就没有评分这一个过程。

GET /forum/article/_search

{

"query": {

"bool": {

"should": [

{

"constant_score": {

"query": {

"match": {

"title": "java"

}

}

}

},

{

"constant_score": {

"query": {

"match": {

"title": "spark"

}

}

}

}

]

}

}

}

原文地址:https://www.cnblogs.com/liuqianli/p/8529090.html

时间: 2024-10-29 08:22:58

27.四种常见的相关度分数优化方法的相关文章

application/json 四种常见的 POST 提交数据方式

application/json 四种常见的 POST 提交数据方式 四种常见的 POST 提交数据方式 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式. 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范.规范把 HTTP 请求分为三个部分:状态行.请求头.消息主

四种常见的数据结构、LinkedList、Set集合、Collection、Map总结

四种常见的数据结构:    1.堆栈结构:        先进后出的特点.(就像弹夹一样,先进去的在后进去的低下.)    2.队列结构:        先进先出的特点.(就像安检一样,先进去的先出来)    3.数组结构:        查找元素快,但是增删元素慢    4.链表结构:        增删元素快,但是查找元素慢 LinkedList:(List接口下的一个子类,和ArrayList是同级别关系)    1.底层是链表结构    2.它的一些特有方法:        addFir

浏览器怎么设置代理IP?四种浏览器设置代理IP的方法

有时候上网需要更换IP,但是本地IP不需要更换,只是通过更换浏览器IP的方式来隐藏自己的IP,突破网络的限制,那么浏览器怎么设置代理IP?不同的浏览器设置代理IP的方法略有不同,下面黑洞代理小编整理了四种浏览器设置代理IP的方法.1.IE浏览器IE浏览器无疑是最常用的浏览器,而像360浏览器.搜狗浏览器.QQ浏览器这样的浏览器都是基于IE内核开发的浏览器,设置代理IP的方法也大同小异.IE浏览器上选择"工具--Internet选项--连接--局域网设置".在"局域网设置&qu

ListView设置条目显示四种方案(listView的优化)

Listview是安卓中比不可少的一道风景,但是我用到listView的时候知道ListView容易造成内存的溢出,如果条目很少的话 ,我们一般的是直接使用,但是对于现在大量的ListView的显示,造成内存的溢出会很常见.话不多说了,先上代码 第一种很好理解,但是容易照成内存的溢出. 效果图(都是死代码 不多写了效果图) item的代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm

Android 四种常见的线程池

引入线程池的好处 1)提升性能.创建和消耗对象费时费CPU资源 2)防止内存过度消耗.控制活动线程的数量,防止并发线程过多. 我们来看一下线程池的简单的构造 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecution

robot framework接口测试之二-四种常见的POST提交数据方式

写接口测试用例时,遇到以json格式提交数据时,报错,Request如下图: Response如下图: 改成form格式提交,可以正常运行,如下图: 代码如下: ------------------------------------------------------------------------------------------------ POST一般用来向服务端提交数据,有四种提交数据的格式,分别是: 1.application/x-www-form-urlencoded 2.a

四种常见 Git 工作流比较

轉載:http://toutiao.io/contribute 多种多样的工作流使得在项目中实施Git时变得难以选择.这份教程提供了一个出发点,调查企业团队最常见的Git工作流. 阅读的时候,请记住工作流应该是一种规范而不是金科玉律.我们希望向你展示所有工作流,让你融会贯通,因地制宜. 这份教程讨论了下面四种工作流: 中心化的工作流 基于功能分支的工作流 Gitflow工作流 Fork工作流 中心化的工作流 过渡到分布式分版本控制系统看起来是个令人恐惧的任务,但你不必为了利用Git的优点而改变你

四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现

虽然说现在官方的自带插件已经有很多了,但是有时候往往不能满足我们的需求,下面我简单介绍一些 常见的四种提示弹出框(success,loading,error,warning),我分别用原生JavaScript和jQuery来介绍分享给各位博友! 一.首先介绍原生JavaScript来实现四种提示弹出框: 第一步:先看看html的建立 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:

四种常见的MapReduce设计模式

MapReduce设计模式(MapReduce Design Pattern) 整个MapReduce作业的阶段主要可以分为以下四种: 1.Input-Map-Reduce-Output 2.Input-Map-Output 3.Input-Multiple Maps-Reduce-Output 4.Input-Map-Combiner-Reduce-Output 下面我将一一介绍哪种场景使用哪种设计模式. Input-Map-Reduce-Output Input?Map?Reduce?Out