最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Elasticsearch算分優(yōu)化方案之rescore_query示例詳解

 更新時(shí)間:2023年08月23日 15:54:47   作者:醉魚  
這篇文章主要為大家介紹了Elasticsearch算分優(yōu)化方案之rescore_query示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

今天來說一說Elasticsearch 的重新評(píng)分,即在檢索出來一次結(jié)果的基礎(chǔ)上在進(jìn)行檢索提升數(shù)據(jù)排序效果,但是僅對(duì)查詢或者post_filter階段返回的前多少條進(jìn)行二次查詢。在每個(gè)分片上進(jìn)行二次檢索的文檔數(shù)量時(shí)可以通過window_size 控制的,該參數(shù)默認(rèn)10。

默認(rèn)情況下,原來的查詢語句與二次查詢的份數(shù)將線性組合以生成文檔的最終得分_score,原始查詢語句的權(quán)重通過query_weight控制,重新二次查詢的權(quán)重通過rescore_query_weight控制,他們默認(rèn)都是1

在Elasticsearch中,rescore_query是一種用于改進(jìn)搜索結(jié)果排序的查詢。它可以在原始查詢結(jié)果的基礎(chǔ)上重新計(jì)算得分,并重新排序搜索結(jié)果。

rescore_query通常用于在搜索過程的后期階段對(duì)搜索結(jié)果進(jìn)行優(yōu)化。它可以根據(jù)特定的需求和業(yè)務(wù)規(guī)則,對(duì)原始查詢結(jié)果進(jìn)行二次排序,以提高最相關(guān)的文檔的排名。

rescore_query可以在分布式搜索中非常有用,因?yàn)樗鼉H在原始查詢的結(jié)果上執(zhí)行計(jì)算,而不需要重新執(zhí)行整個(gè)查詢過程。這可以提高搜索速度并減輕系統(tǒng)負(fù)載。

通過使用rescore_query,可以根據(jù)不同的評(píng)分算法、過濾器或其他上下文信息,對(duì)搜索結(jié)果進(jìn)行個(gè)性化的定制排序。它可以根據(jù)文檔的屬性、時(shí)間戳、地理位置等進(jìn)行排序,以獲得更加準(zhǔn)確和有用的搜索結(jié)果。

總而言之,rescore_query是一種用于改進(jìn)搜索結(jié)果排序的查詢,可以根據(jù)不同的規(guī)則和需求重新計(jì)算得分并重新排序搜索結(jié)果,以提高搜索準(zhǔn)確性和實(shí)用性。

實(shí)戰(zhàn)

搭建ES環(huán)境

version: '3.8'
services:
  cerebro:
    image: lmenezes/cerebro:0.8.3
    container_name: cerebro
    ports:
     - "9000:9000"
    command:
     - -Dhosts.0.host=http://eshot:9200
    networks:
     - elastic
  kibana:
    image: docker.elastic.co/kibana/kibana:8.1.3
    container_name: kibana
    environment:
      - I18N_LOCALE=zh-CN
      - XPACK_GRAPH_ENABLED=true
      - TIMELION_ENABLED=true
      - XPACK_MONITORING_COLLECTION_ENABLED="true"
      - ELASTICSEARCH_HOSTS=http://eshot:9200
      - server.publicBaseUrl=http://192.168.160.234:5601
    ports:
      - "5601:5601"
    networks:
      - elastic
  eshot:
    image: elasticsearch:8.1.3
    container_name: eshot
    environment:
      - node.name=eshot
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=eshot,eswarm,escold
      - cluster.initial_master_nodes=eshot,eswarm,escold
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
      - node.attr.node_type=hot
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - D:\zuiyuftp\docker\es8.1\eshot\data:/usr/share/elasticsearch/data
      - D:\zuiyuftp\docker\es8.1\eshot\logs:/usr/share/elasticsearch/logs
      - D:\zuiyuftp\docker\es8.1\eshot\plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9200:9200
    networks:
      - elastic
  eswarm:
    image: elasticsearch:8.1.3
    container_name: eswarm
    environment:
      - node.name=eswarm
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=eshot,eswarm,escold
      - cluster.initial_master_nodes=eshot,eswarm,escold
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
      - node.attr.node_type=warm
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - D:\zuiyuftp\docker\es8.1\eswarm\data:/usr/share/elasticsearch/data
      - D:\zuiyuftp\docker\es8.1\eswarm\logs:/usr/share/elasticsearch/logs
      - D:\zuiyuftp\docker\es8.1\eshot\plugins:/usr/share/elasticsearch/plugins
    networks:
      - elastic
  escold:
    image: elasticsearch:8.1.3
    container_name: escold
    environment:
      - node.name=escold
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=eshot,eswarm,escold
      - cluster.initial_master_nodes=eshot,eswarm,escold
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
      - node.attr.node_type=cold
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - D:\zuiyuftp\docker\es8.1\escold\data:/usr/share/elasticsearch/data
      - D:\zuiyuftp\docker\es8.1\escold\logs:/usr/share/elasticsearch/logs
      - D:\zuiyuftp\docker\es8.1\eshot\plugins:/usr/share/elasticsearch/plugins
    networks:
      - elastic
# volumes:
#   eshotdata:
#     driver: local
#   eswarmdata:
#     driver: local
#   escolddata:
#     driver: local
networks:
  elastic:
    driver: bridge

創(chuàng)建索引

PUT /zfc-doc-000006
{
  "mappings": {
    "properties": {
      "title":{
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "content": {
        "type": "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

添加測(cè)試數(shù)據(jù)

PUT _bulk
{"index":{"_index":"zfc-doc-000006","_id":"1"}}
{"title":"ES實(shí)戰(zhàn)","content":"ES的實(shí)戰(zhàn)操作,實(shí)戰(zhàn)要領(lǐng),實(shí)戰(zhàn)經(jīng)驗(yàn)"}
{"index":{"_index":"zfc-doc-000006","_id":"2"}}
{"title":"MySQL實(shí)戰(zhàn)","content":"MySQL的實(shí)戰(zhàn)操作"}
{"index":{"_index":"zfc-doc-000006","_id":"3"}}
{"title":"MySQL","content":"MySQL一定要會(huì)"}

檢索驗(yàn)證

首先我們還是正常檢索一下content字段中包含實(shí)戰(zhàn)的文檔

GET zfc-doc-000006/_search
{
  "query": {
    "match": {
      "content": "實(shí)戰(zhàn)"
    }
  }
}

按照我們的預(yù)期,因?yàn)?code>文檔1中包含實(shí)戰(zhàn)3次出現(xiàn),所以titleES實(shí)戰(zhàn)的排名靠前,可以看到文檔1的算分為0.6,位列第一,輸出結(jié)果如下

"max_score" : 0.667102,
    "hits" : [
      {
        "_index" : "zfc-doc-000006",
        "_id" : "1",
        "_score" : 0.667102,
        "_source" : {
          "title" : "ES實(shí)戰(zhàn)",
          "content" : "ES的實(shí)戰(zhàn)操作,實(shí)戰(zhàn)要領(lǐng),實(shí)戰(zhàn)經(jīng)驗(yàn)"
        }
      },
      {
        "_index" : "zfc-doc-000006",
        "_id" : "2",
        "_score" : 0.5442147,
        "_source" : {
          "title" : "MySQL實(shí)戰(zhàn)",
          "content" : "MySQL的實(shí)戰(zhàn)操作"
        }
      }
    ]

然后對(duì)檢索出來的實(shí)戰(zhàn)的文檔中,進(jìn)行重新算分排序,包含MySQL的排名在前,增加算分

GET zfc-doc-000006/_search
{
  "query": {
    "match": {
      "content": "實(shí)戰(zhàn)"
    }
  },
  "rescore": {
    "query": {
      "rescore_query":{
        "match":{
          "title":"MySQL"
        }
      },
      "query_weight" : 0.7,
      "rescore_query_weight" : 1.2
    },
    "window_size": 50
  }
}

上述查詢語句的意思就是查詢content字段中包含”實(shí)戰(zhàn)“的文檔,權(quán)重為0.7。并對(duì)文檔中titleMySQL的文檔增加評(píng)分,權(quán)重為1.2,window_size50,表示取分片結(jié)果的前50進(jìn)行重新算分

響應(yīng)結(jié)果如下,可以看到titleMySQL實(shí)戰(zhàn)的評(píng)分已經(jīng)變?yōu)?code>0.9,遠(yuǎn)遠(yuǎn)的超過了titleES實(shí)戰(zhàn)的文檔

"hits" : [
      {
        "_index" : "zfc-doc-000006",
        "_id" : "2",
        "_score" : 0.9022989,
        "_source" : {
          "title" : "MySQL實(shí)戰(zhàn)",
          "content" : "MySQL的實(shí)戰(zhàn)操作"
        }
      },
      {
        "_index" : "zfc-doc-000006",
        "_id" : "1",
        "_score" : 0.46697137,
        "_source" : {
          "title" : "ES實(shí)戰(zhàn)",
          "content" : "ES的實(shí)戰(zhàn)操作,實(shí)戰(zhàn)要領(lǐng),實(shí)戰(zhàn)經(jīng)驗(yàn)"
        }
      }
    ]

總結(jié)

通過rescore_query我們可以對(duì)檢索結(jié)果進(jìn)行二次評(píng)分,增加自己更復(fù)雜的評(píng)分邏輯,提供更準(zhǔn)確的結(jié)果排序,但是相應(yīng)的也會(huì)增加查詢的計(jì)算成本與響應(yīng)時(shí)間。

《一篇文章讓你學(xué)會(huì)Elasticsearch中的查詢》一文中,我們學(xué)習(xí)了修改算分的幾種方式,本文學(xué)習(xí)了如何在檢索結(jié)果返回之后對(duì)檢索結(jié)果進(jìn)行更精細(xì)的二次評(píng)分排序。后面推出一篇專門修改算分的文章,以此來實(shí)現(xiàn)工作中的修改算分的需求。

以上就是Elasticsearch算分優(yōu)化方案之rescore_query示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Elasticsearch算分rescore_query的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java代碼實(shí)現(xiàn)mysql分表操作(用戶行為記錄)

    java代碼實(shí)現(xiàn)mysql分表操作(用戶行為記錄)

    這篇文章主要介紹了java代碼實(shí)現(xiàn)mysql分表操作(用戶行為記錄),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 如何用Intellij idea2020打包jar的方法步驟

    如何用Intellij idea2020打包jar的方法步驟

    這篇文章主要介紹了如何用Intellij idea 2020打包jar的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • MyBatis?如何使項(xiàng)目兼容多種數(shù)據(jù)庫的解決方案

    MyBatis?如何使項(xiàng)目兼容多種數(shù)據(jù)庫的解決方案

    要想做兼容多種數(shù)據(jù)庫,那毫無疑問,我們首先得明確我們要兼容哪些數(shù)據(jù)庫,他們的數(shù)據(jù)庫產(chǎn)品名稱是什么,本次我們講解了一套使項(xiàng)目兼容多種數(shù)據(jù)庫的方案,對(duì)MyBatis項(xiàng)目兼容多種數(shù)據(jù)庫操作方法感興趣的朋友一起看看吧
    2024-05-05
  • BufferedInputStream(緩沖輸入流)詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    BufferedInputStream(緩沖輸入流)詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了BufferedInputStream緩沖輸入流的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之在線高中考試系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之在線高中考試系統(tǒng)的實(shí)現(xiàn)

    這是一個(gè)使用了java+SSM+Jsp+Mysql+Maven開發(fā)的在線高中考試系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有考試系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧
    2022-02-02
  • SpringBoot 集成 Statemachine的實(shí)戰(zhàn)指南

    SpringBoot 集成 Statemachine的實(shí)戰(zhàn)指南

    本文介紹了Spring State Machine框架的基本概念、核心特性、注解驅(qū)動(dòng)開發(fā)方式以及如何在Spring Boot項(xiàng)目中集成狀態(tài)機(jī),通過狀態(tài)機(jī),可以有效地管理復(fù)雜的狀態(tài)流轉(zhuǎn)邏輯,文章還討論了狀態(tài)機(jī)的持久化問題,并提供了一個(gè)自定義持久化實(shí)現(xiàn)的示例,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Java?延時(shí)隊(duì)列及簡(jiǎn)單使用方式詳解

    Java?延時(shí)隊(duì)列及簡(jiǎn)單使用方式詳解

    這篇文章主要介紹了Java延時(shí)隊(duì)列簡(jiǎn)單使用方式,通過本文學(xué)習(xí)知道延時(shí)隊(duì)列是什么可以用來干什么,本文通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 超詳細(xì)的Java 問題排查工具單

    超詳細(xì)的Java 問題排查工具單

    這篇文章主要介紹了超詳細(xì)的Java 問題排查工具單,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java實(shí)現(xiàn)快速生成詞云圖的示例代碼

    Java實(shí)現(xiàn)快速生成詞云圖的示例代碼

    詞云(Word?Cloud),又稱文字云、標(biāo)簽云(Tag?Cloud)、關(guān)鍵詞云(Keyword?Cloud),是對(duì)文本信息中一定數(shù)量的關(guān)鍵詞出現(xiàn)的頻率高低情況的一種可視化展現(xiàn)方式。本文將用Java代碼實(shí)現(xiàn)快速生成詞云圖,需要的可以參考一下
    2023-02-02
  • 從零開始講解Java微信公眾號(hào)消息推送實(shí)現(xiàn)

    從零開始講解Java微信公眾號(hào)消息推送實(shí)現(xiàn)

    微信公眾號(hào)分為訂閱號(hào)和服務(wù)號(hào),無論有沒有認(rèn)證,訂閱號(hào)每天都能推送一條消息,也就是每天只能推送一次消息給粉絲,這篇文章主要給大家介紹了關(guān)于Java微信公眾號(hào)消息推送實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

建水县| 涿州市| 容城县| 浦县| 南充市| 石棉县| 尼玛县| 辛集市| 涞源县| 江川县| 六枝特区| 江油市| 新兴县| 阳谷县| 农安县| 体育| 子长县| 六枝特区| 通城县| 调兵山市| 禄丰县| 鹰潭市| 皮山县| 黄陵县| 文成县| 乳源| 峡江县| 循化| 双牌县| 平和县| 南部县| 南投县| 天长市| 郁南县| 华坪县| 尚义县| 三门县| 潜江市| 资中县| 柯坪县| 罗城|