Query&Filtering与多字符串多字段查询

Query&Filtering与多字符串多字段查询

        • Query Context & Filter Contxt
        • bool查询
        • bool查询语法
        • 如何解决结构化查询 - "包含而不是相等"的问题
        • 增加count字段,是用bool查询解决
        • Filter Context - 不影响算分
        • Query Context - 影响算分
        • bool嵌套
        • 查询语句的结构,会对相关度算分产生影响
        • 控制字段的boosting

Query Context & Filter Contxt

  • 高级搜索功能 : 支持多项文本输入,针对多个字段进行搜索
  • 搜索引擎一般也提供基于时间,价格等条件的过滤
  • 在Elasticsearch 中,有Query 和 Filter两种不同的Contxt
    • Query Contxt:相关性算分
    • Filter Contxt:不需要算分(Yes or No),可以利用Cache,获得更好的性能

bool查询

  • 一个bool查询,是一个或者多个查询子句的组合
    • 总共包括4种子句。其中2种会影响算分,2种不影响算分
  • 相关性并不只是全文本搜索的专利。也适合于 yes | no 的子句,匹配的子句越多,相关性评分越高。如果多条查询子句被合并为一条复合查询语句,比如bool查询,则每个查询子句计算得分的评分会被合并到总的相关性评分中

bool查询语法

  • 子查询可以任意顺序出现
  • 可以嵌套多个查询
  • 如果你的bool查询中,没有must条件,should中 必须至少满足一条查询
    在这里插入图片描述

如何解决结构化查询 - "包含而不是相等"的问题

  • 解决方案:增加一个 genre count字段进行计数

增加count字段,是用bool查询解决

Filter Context - 不影响算分

Query Context - 影响算分

bool嵌套

在这里插入图片描述

查询语句的结构,会对相关度算分产生影响

  • 同一层级下的竞争字段,具有有相同的权重
  • 通过嵌套bool查询,可以改变对算分的影响

控制字段的boosting

  • Boosting是控制相关度的一种手段
    • 索引,字段,或者查询子条件
  • 参数boost的含义
    • 当 boost > 1 时,打分的相关度相对行提升
    • 当 0 < boost < 1 时,打分的权重相对性降低
    • 当 boost < 0 时,贡献负分

热门文章

暂无图片
编程学习 ·

yum本地云搭建

yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 yum仓库配置文…
暂无图片
编程学习 ·

layui的时间控件laydate实现不用点击确定按钮

laydate.render({elem: #start, //指定元素type:month, //插件只选择年月showBottom :false, //关闭底部框 去掉取消、确定、清空按钮change: function(value, date, endDate){$("#start").val(value);if($(".layui-laydate").length){$(".layu…
暂无图片
编程学习 ·

leetcode718. 最长重复子数组/动态规划,滑动窗口

文章目录题目:leetcode718. 最长重复子数组/动态规划基本思想1:动态规划基本思想2:滑动窗口基本思想3:暴力 题目:leetcode718. 最长重复子数组/动态规划 给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1…
暂无图片
编程学习 ·

Linux系统中的firewalld火墙管理及优化(firewalld)

Linux系统中的firewalld火墙管理及优化(firewalld)1.firewalld 的模块化管理及存储方式(1)火墙配置目录 /etc/firewalld 火墙模块目录 /lib/firewalld (2)firewalld的一些域网络区名称 默认配置 trusted(信任) 可接受的所有网络连接 home(家庭) 用于家庭,仅接受ss…
暂无图片
编程学习 ·

Spring核心源码学习笔记-01-XmlFactory

引言最基本的例子,创建一个xmlBeanFactory创建过程中,xmlBeanFactory会对资源文件进行解析,完成beanFactory创建。xmlBeanFactory继承机构:正式开始解析流程:初始化成员变量:XmlBeanDefinitionReader,并传入当前对象,作用于读取资源文件调用方法: this.reader.loadBean…
暂无图片
编程学习 ·

还是别看学位论文

最近我实验室的一个组在做疫情预测的工作。效果还行,论文也写的差不多了。不过上面的老师说引的文章都太老了,让再加点新的。于是今天下午我就和大家一起看文献。之所以之前引的都比较老,主要是因为传染病预测这块分两派,一派是理论建模派,主要工具就是微分动力模型,一般…
暂无图片
编程学习 ·

微信小程序--修改switch组件的大小

修改switch组件的大小 小程序中switch组件的大小往往和实际项目中的大小有些出入,但是发现文档中并没有修改大小的方法,但是可以根据自己的实际情况进行颜色设置。 直接上代码: <switch checked>正常开关</switch> <switch checked style="transform:sc…
暂无图片
编程学习 ·

ssm

目录User.javaUserController.javaUserDao.javaUserService.javaIUserService.javaUserMapper.xmlapplicationContext.xmldb.propertiesspring-mvc.xmlapplicationContext.xmlweb.xmlfailure.jspIndex.jspok.jsp pring 1.控制反转-》控制权的转移 2.依赖注入 DI 3.面向切面 aop…
暂无图片
编程学习 ·

通过过滤器Filter解决post/get请求中文编码问题示例代码

##编码过滤器 功能:将客户端发送过来的数据(尤其是中文)都转换成UTF-8,这样后续的处理就不需要做其他额外的编码转换,做到编码前后统一 实现说明: 对于post请求以及响应可以直接调用setCharacterEncoding方法设置编码格式,而对于get请求,由于get请求参数是通过路径传参,而…
暂无图片
编程学习 ·

Android客户端调起地图定位不准,导航路线出现偏差,目的地坐标偏离

前言 APP调起地图导航出现偏差 是什么问题造成的呢 一:可能是模糊定位造成的 二:也有可能 改变了经纬度的数据 解决思路如下 先了解一下调起高德APP的各个参数是什么 百度地图 参数如下:参数名称 描述 是否必选 格式(示例)origin 起点名称或经纬度,或者可同时提供名称和经纬…
暂无图片
编程学习 ·

Redis和Java客户端 Jedis

今日内容 1. redis1. 概念2. 下载安装3. 命令操作1. 数据结构4. 持久化操作5. 使用Java客户端操作redisRedis 1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库1.1.什么是NOSQLNoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型…
暂无图片
编程学习 ·

Android MVVM Demo

AndroidMvvm练习AndroidMVVM 是Google推出的,网上介绍也有很多,我就不废话了,公司项目中使用的mvvm,我整理个小demo练习记录一下1.DataBinding配置dataBinding {enabled = true}在XML中使用, 原先的布局还是照常写<layout xmlns:android="http://schemas.android.c…
暂无图片
编程学习 ·

iOS开发笔记之八十——单例的使用总结笔记

******阅读完此文,大概需要10分钟******一、单例的创建#import "MDInstanceManager.h"@implementation MDInstanceManagerstatic MDInstanceManager *shareInstance = nil; static dispatch_once_t onceToken;+ (instancetype)shareInstance {dispatch_once(&on…
暂无图片
编程学习 ·

java常用面试题——笔试选择题解析

1.以下关于 abstract 关键字的说法,正确的是(D)。 A.abstract 可以与 final 并列修饰同一个类。 B.abstract 类中不可以有 private 的成员。 C.abstract 类中必须全部是 abstract 方法。 D.abstract 方法必须在 abstract 类或接口中。解析: final的类不能被重写和继承;而a…
暂无图片
编程学习 ·

centos 怎么安装 nginx

linux centos 7 安装 nginx 原文来自官网 : http://nginx.org/en/linux_packages.html Installation instructions Before you install nginx for the first time on a new machine, you need to set up the nginx packages repository. Afterward, you can install and updat…
暂无图片
编程学习 ·

第四天:Spark Streaming

Spark Streaming概述 1. Spark Streaming是什么 Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果…
暂无图片
编程学习 ·

文件夹内图片批量重命名代码

文件夹内图片批量重命名代码import os import re import sys import cv2 import torchvision.transforms as transforms path = r"data/masks/" def renameall(path):fileList = os.listdir(path) # 待修改文件夹currentpath = os.getcwd() # 得到进程当前工作目录…
暂无图片
编程学习 ·

dva项目创建过程图解及目录模块详解

一.项目创建可以参考官方文档1.安装 dva-cli通过 npm 安装 dva-cli 并确保版本是 0.9.1 或以上。(“$符”代表你的文件路径,如:D:\Dvajs_workspace\)$ npm install dva-cli -g $ dva -v dva-cli version 0.9.12.创建新应用dva版本符合要求之后,进入想要创建项目的文件夹下…
暂无图片
编程学习 ·

CDN和DNS的区别

相信有很多的朋友会被这几个名词绕的有些头大,很多朋友觉得智能DNS跟双线加速、CDN加速是类似的技术。其实不然,虽然他们的目的都是一个:让用户更快的访问网站。但是他们的应用原理却大相径庭。大家一定很清楚这几种都是比较常见的主机加速的方式。所以文本主要介绍一下“智…