elasticsearch得分设置以及分词器不同层次定义_elasticsearch 分词词性权重-程序员宅基地

技术标签: Elasticsearch: 权威指南 学习  elasticsearch  elasticsearch练习  

GET _cat/indices

GET hotel/_search

GET /_search
{
    
  "query": {
    
    "constant_score": {
    
      "filter": {
    
        "term": {
    
          "lvg_mc": "酒店"
        }
      },
      "boost": 1.2
    }
  }
}

DELETE /my_index 

PUT /my_index
{
     "settings": {
     "number_of_shards": 1 }} 

POST /my_index/_bulk
{
     "index": {
     "_id": 1 }}
{
     "title": "The quick brown fox" }
{
     "index": {
     "_id": 2 }}
{
     "title": "The quick brown fox jumps over the lazy dog" }
{
     "index": {
     "_id": 3 }}
{
     "title": "The quick brown fox jumps over the quick dog" }
{
     "index": {
     "_id": 4 }}
{
     "title": "Brown fox brown dog" }

GET /my_index/_search
{
    
  "query": {
    
    "match": {
    
      "title": "QUICK!"
    }
  }
}

DELETE my_index

查询所有数据

GET hotel/_search
{
    
   "_source": ["xm","lvg_mc","sex_dic"], 
  "query": {
    
    "match_all": {
    }
  }
  , "size": 100
}

match query 指定分词方式,控制匹配精度

GET hotel/_search
{
    
  "_source": ["xm","lvg_mc","sex_dic"], 
  "query": {
    
    "match": {
    
      "lvg_mc": {
    
        "query": "如家 酒店 赣州",
        "minimum_should_match": "75%",
        "analyzer": "ik_smart"
      }
    }
  }
}

查询包含 如家 酒店 国际 赣州的数据

必须包含酒店和国际。

调整权重,如果包含赣州,分数更高一些,排名调整到前面

如果包含如家,则比赣州的得分更高一些 排名更靠前
GET hotel/_search
{
    
  "_source": ["xm","lvg_mc","sex_dic"], 
  "query": {
    
    "bool": {
    
      "must": [
        {
    
          "match": {
    
            "lvg_mc": {
    
              "query": "酒店国际",
              "analyzer": "ik_smart"
            }
          }
        }
      ],
      "should": [
        {
    
          "match": {
    
            "lvg_mc": {
    
              "query": "如家",
              "analyzer": "ik_smart",
              "boost": 3
            }
          }
        },
        {
    
          "match": {
    
            "lvg_mc": {
    
              "query": "赣州",
              "analyzer": "ik_smart",
              "boost": 2
            }
          }
        }
      ]
    }
  }
}



GET _analyze
{
    
  "analyzer": "ik_smart",
  "text": "酒店国际"
}
可以使用 validate-query API 查看 会如何进行查询

+代表必须包含 ()代表可选包含 ^代表额外得分

GET hotel/_validate/query?explain
{
    
  "query": {
    
    "bool": {
    
      "must": [
        {
    
          "match": {
    
            "lvg_mc": {
    
              "query": "酒店国际",
              "analyzer": "ik_smart"
            }
          }
        }
      ],
      "should": [
        {
    
          "match": {
    
            "lvg_mc": {
    
              "query": "如家",
              "analyzer": "ik_smart",
              "boost": 3
            }
          }
        },
        {
    
          "match": {
    
            "lvg_mc": {
    
              "query": "赣州",
              "analyzer": "ik_smart",
              "boost": 2
            }
          }
        }
      ]
    }
  }
}

#默认分析器
虽然我们可以在字段层级指定分析器,但是如果该层级没有指定任何的分析器,那么我们如何能确定这个字段使用的是哪个分析器呢?

分析器可以从三个层面进行定义:按字段(per-field)、按索引(per-index)或全局缺省(global default)。Elasticsearch 会按照以下顺序依次处理,直到它找到能够使用的分析器。索引时的顺序如下:

字段映射里定义的 analyzer ,否则
索引设置中名为 default 的分析器,默认为
standard 标准分析器
在搜索时,顺序有些许不同:

查询自己定义的 analyzer ,否则
字段映射里定义的 analyzer ,否则
索引设置中名为 default 的分析器,默认为
standard 标准分析器
有时,在索引时和搜索时使用不同的分析器是合理的。我们可能要想为同义词建索引(例如,所有 quick 出现的地方,同时也为 fast 、 rapid 和 speedy 创建索引)。但在搜索时,我们不需要搜索所有的同义词,取而代之的是寻找用户输入的单词是否是 quick 、 fast 、 rapid 或 speedy 。

为了区分,Elasticsearch 也支持一个可选的 search_analyzer 映射,它仅会应用于搜索时( analyzer 还用于索引时)。还有一个等价的 default_search 映射,用以指定索引层的默认配置。

如果考虑到这些额外参数,一个搜索时的 完整 顺序会是下面这样:

查询自己定义的 analyzer ,否则
字段映射里定义的 search_analyzer ,否则
字段映射里定义的 analyzer ,否则
索引设置中名为 default_search 的分析器,默认为
索引设置中名为 default 的分析器,默认为
standard 标准分析器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44993313/article/details/106719792

智能推荐

ASP.NET Core 运行原理解剖[5]:Authentication-程序员宅基地

文章浏览阅读3.1k次。在现代应用程序中,认证已不再是简单的将用户凭证保存在浏览器中,而要适应多种场景,如App,WebAPI,第三方登录等等。在 ASP.NET 4.x 时代的Windows认证和Forms认证已无法满足现代化的需求,因此在ASP.NET Core 中对认证及授权进行了全新设计,使其更加灵活,可以应付各种场景。在上一章中,我们提到HttpContext中认证相关的功能放在了独立的模块中,以扩展的方式来展_.net core authenticationhandler httpcontext

java8特性:list转Map并排序_list转成map且顺序不变-程序员宅基地

文章浏览阅读1.5w次。初始代码public Map<String,List<RgwstBean>> getMap(List<RgwstBean> lists){ Map<String,List<RgwstBean>> map = new TreeMap<String,List&am_list转成map且顺序不变

leaflet通过WFS服务加载geoserver 矢量数据_leaflet geoserver wfs 方式-程序员宅基地

文章浏览阅读5.9k次,点赞5次,收藏16次。leaflet通过WFS服务加载geoserver 矢量数据1.前言2.从geoserver获得geojson数据3.geoserver跨域配置4.根据请求结果生成layer5.完整代码1.前言leaflet默认支持的服务只有WMS,因此不能加载WFS数据,但是leaflet提供了另一个方法geoJson,它的作用是从一个geojson文件中加载地图,所以利用leaflet加载WFS数据的一个..._leaflet geoserver wfs 方式

自定义动画animate_使用animate方法制作任意动画是什么意思-程序员宅基地

文章浏览阅读937次。开发工具与关键技术:VS,MVC作者:陈梅撰写时间:2019年6月2 日所有代码来源与老师教学这次分享一个好玩的自定义动画效果,这次还是用jQuery做出来的小功能。这次我们先直接看最后已经布局好的效果。把所想写的内容填写到p标签中,给到p标签的动画功能是,页面已执行时,p标签的内容就会渐渐消失。在给一个紫色的div盒子,这个盒子要实现四种动画效果,所以给这四个动画效果一个下拉框,选择..._使用animate方法制作任意动画是什么意思

如何在MonogoDB中查看配置的参数值-程序员宅基地

文章浏览阅读1k次。怎样在MongoDB实现mysql show variables like 'xx';例如:1.查看所有参数值:C:\Users\duansf>mongoMongoDB shell version: 2.6..._查看mongodb 默认参数值

【ACO TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 1583期】-程序员宅基地

文章浏览阅读863次。蚁群算法求解旅行商问题完整的代码,方可运行;可提供运行操作视频!适合小白!

随便推点

计算机网络实验报告建立校园网,计算机网络实验报告-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏29次。设计性实验报告一、实验目的通过对网络设备的连通和对拓扑的分析,加深对常见典型局域网拓扑的理解;通过路由建立起网络之间的连接,熟悉交换机、路由器的基本操作命令,了解网络路由的设计与配置。二、背景描述假设某校园网通过1台三层交换机连到校园网出口路由器,路由器再和校园外的另一台路由器相接,现做适当配置,实现校园网内部主机与校园网外部主机的相互通信。三、实验设备二层交换机五台、三层交换机一台,路由器两台,..._计算机网络校园网组建 实训报告

蓝桥杯之等差素数列_长度为十的等差素数列,公差最小是多少蓝桥杯-程序员宅基地

文章浏览阅读554次,点赞2次,收藏3次。题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。2,3,5,7,11,13,....2,3,5,7,11,13,.... 是素数序列。 类似:7,37,67,97,127,1577,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。上边的数列公差为 30,长度为 66。20042004 年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜_长度为十的等差素数列,公差最小是多少蓝桥杯

iOS应用内付费(IAP)开发步骤列表_ios 添加订阅会员项目开发-程序员宅基地

文章浏览阅读1.6k次。配置Developer.apple.com登录到Developer.apple.com,然后进行以下步骤:为应用建立建立一个不带通配符的App ID用该App ID生成和安装相应的Provisioning Profile文件。配置iTunes Connect登录到iTunes Connet,然后进行以下步骤:用该App ID创建一个新的应用。在该应用中,创建应用内付费项_ios 添加订阅会员项目开发

比较器-程序员宅基地

文章浏览阅读5.3k次,点赞3次,收藏46次。比较器比较器:顾名思义,做比较的。比较两个电压,然后输出高低电平。01不带反相的比较器当Vin>Vref,输出高电平,当Vin<Vref,输出低电平.02带反相的比较器当Vin>Vref,输出低电平,当Vin<Vref,输出高电平.03LM139比较器简化后的内部架构蓝色框:PNP差分放大器。每一边差分级使用达林顿 PNP 晶体管。使用达林顿连接晶..._比较器

如何深入学习c语言,如何深入学习C语言?-程序员宅基地

文章浏览阅读2.1k次。匿名用户1级2016-09-11 回答其实吧,学习C语言是以后从事软件设计的一个基础。任何领域都需要长时间的投入才有结果,你现在学习了C语言,再学习其他语言的时候就比较上手了。在软件设计中:学习一门语言仅仅是第一阶段:如果你基本掌握了一门语言,那么再想深入学习的话就需要把所有C语言的相关的库函数弄懂,并熟练掌握一个开发平台(如最基础的TC)。这是第二阶段下一阶段你就需要继续学习不同的操作系统所提供..._c语言入门后怎么深入

React Native 嵌入到iOS原生项目_ios原生项目嵌入reactnative 模块-程序员宅基地

文章浏览阅读672次。如果你正准备从头开始制作一个新的应用,那么React Native会是个非常好的选择。但如果你只想给现有的原生应用中添加一两个视图或是业务流程,React Native也同样不在话下。只需简单几步,你就可以给原有应用加上新的基于React Native的特性、画面和视图等。https://zjqian.github.io/2017/05/03/rn-integration-iosNative/_ios原生项目嵌入reactnative 模块

推荐文章

热门文章

相关标签