文档章节

控制关联性

w
 wang__tao
发布于 2016/08/17 18:31
字数 580
阅读 4
收藏 0

###控制关联性# 在index级别修改权重

  • 使用的参数为indices_boost
GET /docs_2014_*/_search 
{
  "indices_boost": { 
    "docs_2014_10": 3,
    "docs_2014_09": 2
  },
  "query": {
    "match": {
      "text": "quick brown fox"
    }
  }
}

docs_2014_10增加到3,docs_2014_9增加到2,其他的保持默认值,即为1。 NOT Quite Not
搜索一个词apple,会出现公司,水果,各种食谱,我们想把公司放在前面,而把其他的放在后面,可以使用must加must_not,但这样就会把其他完全过滤了,解决这种问题就可以使用boosting Query

GET /_search
{
  "query": {
    "boosting": {
      "positive": {
        "match": {
          "text": "apple"
        }
      },
      "negative": {
        "match": {
          "text": "pie tart fruit crumble tree"
        }
      },
      "negative_boost": 0.5
    }
  }
}

其中negative_boost必须小于1.0,像0.5就是对其得分减半。
function_score查询
该function_score查询是采取计分过程的控制的终极工具。它可以让你的函数应用到每个主查询,以改变或完全取代原有查询的_score。

  • weight
  • field_value_factor 如 popularity或者votes
  • random_score
  • Decay functions---linear,exp,gauss
  • script_score
    以popularity为主
    一般blog的post请求
PUT /blogposts/post/1
{
  "title":   "About popularity",
  "content": "In this post we will talk about...",
  "votes":   6
}

查询的方式

GET /blogposts/post/_search
{
  "query": {
    "function_score": { 
      "query": { 
        "multi_match": {
          "query":    "popularity",
          "fields": [ "title", "content" ]
        }
      },
      "field_value_factor": { 
        "field": "votes" 
      }
    }
  }
}

field_value_factor作为每个文档的主要查询,为了function_score可以工作,每个文档必须在votes字段有的一个数字。 处理随机选择
如选择酒店,结果有1,2,3,4,5,其_score的值可能都在2到3之间最多,5的很少,怎么处理2,3之间的结果。使同一个用户每次搜索的结果都相同,这就是随机一致性。解决方法。加上一个function,random_score。

GET /_search
{
  "query": {
    "function_score": {
      "filter": {
        "term": { "city": "Barcelona" }
      },
      "functions": [
        {
          "filter": { "term": { "features": "wifi" }},
          "weight": 1
        },
        {
          "filter": { "term": { "features": "garden" }},
          "weight": 1
        },
        {
          "filter": { "term": { "features": "pool" }},
          "weight": 2
        },
        {
          "random_score": { 
            "seed":  "the users session id" 
          }
        }
      ],
      "score_mode": "sum"
    }
  }
}

random_score没有filter,因此可以应用于所有的文档中。
使用脚本来评分

GET /_search
{
  "function_score": {
    "functions": [
      { ...location clause... }, 
      { ...price clause... }, 
      {
        "script_score": {
          "params": { 
            "threshold": 80,
            "discount": 0.1,
            "target": 10
          },
          "script": "price  = doc['price'].value; margin = doc['margin'].value;
          if (price < threshold) { return price * margin / target };
          return price * (1 - discount) * margin / target;" 
        }
      }
    ]
  }
}

用户是会员级别,给一个折扣(discount),得出每晚确切的价格(threshold),折扣之后,需要的押金(margin)。 TIP script_score函数提供了更大的灵活性,在脚本里,可以使用文档的字段,当前的-score,甚至是TF,IDF,字段长度标准。

© 著作权归作者所有

上一篇: ES的临近匹配
下一篇: elasticsearch
w
粉丝 1
博文 94
码字总数 33700
作品 0
西安
私信 提问
UML实例(三):在线购物系统分析鲁棒图

分析类图文档: 1.图形文档 2.文字说明 该部分由以下部分组成:类图综述、类描述、类联描述、继承描述、依赖描述和其他与类图有关的说明。 (1)类图综述 类图是对系统所抽象出来的实体的属性...

飓风2000
04/12
0
0
配置基于角色管理的Configuration Manager

1. 概述: 在Configuration Manager 中基于角色的管理结合了安全角色、安全作用域和分配的集合来定义每个管理用户的管理作用域。管理作用域包括管理用户可在 Configuration Manager 控制台中...

技术小胖子
2017/11/10
0
0
针对访问控制列表ACL 与 基于角色的访问控制RBAC进行简单介绍

访问控制列表(Access Control List,ACL)   ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRU...

cloud-coder
2016/06/09
89
0
jQuery图片幻灯手风琴效果插件--Slidorion

Slidorion是一个简单易用且轻量级的jQuery图片幻灯插件,它是以幻灯片的形式展示图片,同时以手风琴效果展示与图片相关联的文字内容。此插件内置了多种图片切换效果,如淡入淡出、左右切换、...

匿名
2011/11/28
3.5K
0
Cyanogen 关停后,Google 加强对 Android 控制

自上周 Cyanogen 宣布关停服务后,Google 开始加强对 Android 的控制。Cyanogen 曾扬言要干掉 Google,而上周的关停布告无疑标识着 Google 取得最终胜利。 Google 此次获胜的最大因素是其努力...

达尔文
2016/12/29
2.5K
11

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部