【Elasticsearch】most_fields、best_fields、cross_fields 的區別與用法

most_fields、best_fields、cross_fields 的區別與用法

  • 1.核心區別概述
  • 2.詳細解析與用法
    • 2.1 best_fields(最佳字段匹配)
    • 2.2 most_fields(多字段匹配)
    • 2.3 cross_fields(跨字段匹配)
  • 3.對比案例
    • 3.1 使用 best_fields 搜索
    • 3.2 使用 most_fields 搜索
    • 3.3 使用 cross_fields 搜索
  • 4.選型建議

1.核心區別概述

這三種類型都是 multi_match 查詢中的策略,用于控制多個字段的匹配方式和評分計算:

類型核心思想適用場景評分方式
best_fields取最佳字段查詢詞集中在單個字段使用最高分字段的得分
most_fields字段民主制查詢詞分散在多個字段各字段得分的總和
cross_fields跨字段統一查詢詞需要跨字段組合匹配視為一個大字段計算

2.詳細解析與用法

2.1 best_fields(最佳字段匹配)

  • 默認的多字段匹配類型。
  • 關注查詢詞在單個字段中的最佳匹配。
  • 使用 dis_max 查詢(只取最高分字段的得分)。

典型用例

GET /products/_search
{"query": {"multi_match": {"query": "quick brown","type": "best_fields","fields": ["title^3", "content"], // title權重更高"tie_breaker": 0.3 // 其他字段得分的30%會加入總分}}
}

適用場景

  • 當查詢詞很可能集中在某一個字段時。
  • 例如:搜索 “iPhone”,可能在 title 字段匹配度最高。

優勢

  • 突出最相關字段的匹配。
  • 避免弱相關字段拉高不相關文檔的排名。

2.2 most_fields(多字段匹配)

  • 統計所有字段的匹配情況。
  • 將各字段得分相加作為最終得分。
  • 類似 bool 查詢組合多個 match 查詢。

典型用例

GET /products/_search
{"query": {"multi_match": {"query": "smartphone","type": "most_fields","fields": ["name", "name.pinyin", "name.standard"] // 同義詞字段}}
}

適用場景

  • 相同文本被索引到不同分析方式的字段時。
  • 需要綜合多個字段的匹配程度時。
  • 例如:主字段+拼音字段+同義詞字段 的組合搜索。

優勢

  • 能利用不同分析器的優勢。
  • 對部分匹配更寬容。

2.3 cross_fields(跨字段匹配)

  • 將多個字段視為一個大字段。
  • 要求查詢詞必須出現在至少一個字段中。
  • 使用經典 BM25 / TF-IDF 評分。

典型用例

GET /products/_search
{"query": {"multi_match": {"query": "John Smith","type": "cross_fields","fields": ["first_name", "last_name"],"operator": "and" // 必須同時包含 John 和 Smith}}
}

適用場景

  • 人名搜索(姓和名分布在不同字段)。
  • 地址搜索(省市區街道分散在不同字段)。
  • 需要將多個字段作為一個邏輯字段處理的場景。

優勢

  • 解決 “詞項分散問題”(term dilution problem)。
  • 確保查詢詞必須出現在字段組合中。

3.對比案例

假設有以下文檔:

{"title": "Smartphone X10","description": "Latest smartphone with advanced camera","tags": ["electronics", "mobile"]
}

現在需要搜索 smartphone camera

3.1 使用 best_fields 搜索

{"type": "best_fields","fields": ["title", "description"]
}

結果description 字段的匹配得分更高(包含兩個詞),title 字段的匹配被忽略。

3.2 使用 most_fields 搜索

{"type": "most_fields","fields": ["title", "description"]
}

結果:兩個字段的得分相加,title 匹配 “smartphone”,description 匹配兩個詞。

3.3 使用 cross_fields 搜索

{"type": "cross_fields","fields": ["title", "description"],"operator": "and"
}

結果:要求兩個詞必須出現在字段組合中(description 滿足),類似在虛擬字段 “title+description” 中搜索。

4.選型建議

  • 優先考慮 best_fields
    • 當有明確的主要搜索字段時。
    • 配合 tie_breaker 參數平衡其他字段影響。
  • 考慮 most_fields
    • 當有多個同義字段(如不同分析器生成的字段)。
    • 需要寬松匹配時。
  • 選擇 cross_fields
    • 當數據邏輯上屬于同一字段但物理上分開存儲時。
    • 需要解決詞項分散問題時。
  • 性能考慮
    • best_fields 通常最快(dis_max 查詢簡單)。
    • cross_fields 可能較慢(需要協調多個字段的統計信息)。

🚀 正確選擇匹配類型可以顯著提升搜索相關性和用戶體驗。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87198.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87198.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87198.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣網C語言編程題:在數組中查找目標值位置之暴力解法

一. 簡介 本文記錄一下力扣網上涉及數組的問題:排序數組中查找目標值的位置。主要以C語言實現。 二. 力扣網C語言編程題:在數組中查找目標值位置 題目:在排序數組中查找元素的第一個和最后一個位置 給你一個按照非遞減順序排列的整數數組 …

OSCP - Proving Grounds - tre

主要知識點 突破邊界的方法比較多樣觀察pspy64的檢測結果 具體步驟 依舊nmap掃描開始,開放了80,8082,22端口 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-16 03:39 UTC Nmap scan report for 192.168.56.84 Host is up (0.00083s latency). Not shown: 65532 c…

【Mars3d】支持的basemaps數組與layers數組的坐標系列舉

問題場景: basemap 是epsg4326的。,layer 圖層是 epsg 4450的。可以在一個頁面中展示嗎? 回復: 可以不同坐標系疊加,但layer 圖層是 epsg 4450的只支持arcgis動態服務,其他情況的不支持 wmts只支持3個坐標…

【算法】509. 斐波那契數

509. 斐波那契數 簡單 相關標簽 premium lock icon 相關企業 斐波那契數 (通常用 F(n) 表示)形成的序列稱為 斐波那契數列 。該數列由 0 和 1 開始,后面的每一項數字都是前面兩項數字的和。也就是: F(0) 0,F(1) 1 …

FOC學習筆記(5)內嵌式電機與表貼式電機的區別

1. 引言 在現代電機設計中,永磁同步電機(Permanent Magnet Synchronous Motor, PMSM)因其高效率、高功率密度和優異的動態性能,在工業、新能源汽車、航空航天等領域得到廣泛應用。根據永磁體在轉子中的安裝方式不同,永…

算法 按位運算

按位與(Bitwise AND)和按位異或(Bitwise XOR) 按位與(&) 按位與是對兩個數的二進制表示的每一位進行邏輯與操作。 規則:兩個對應位都為1時,結果位才為1,否則為0。…

python3GUI--基于PyQt5+SQLite3的網址審核系統(詳細圖文)

文章目錄 一.前言二.相關知識1.PyQt52.sqlite3 三.效果預覽1.登錄2.注冊3.普通用戶身份權限4.管理員身份權限 三、技術討論1.數據展示表格1. 更強的表現力和交互性(前端功能豐富)2. 數據處理效率更高(支持大…

與后端現場聯調mock數據

當我們后端在現場沒辦法連后端本地就可以使用mock數據,模擬后端返回數據。使用工具:apifox 一、安裝好以后--新建接口 舉個栗子: 我想建個接口http://123.123.123.123:8080/api/login 二、 新建期望,返回固定值,否則…

C# 事件(發布者和訂閱者)

發布者和訂閱者 很多程序都有一個共同的需求,即當一個特定的程序事件發生時,程序的其他部分可以得到 該事件已經發生的通知。 發布者/訂閱者模式(publisher/subscriber pattem)可以滿足這種需求。在這種模式中,發布 …

RediSearch高性能全文搜索引擎

RediSearch 是 RedisLabs 團隊開發的一個高性能全文搜索引擎,可作為一個 Redis Module 運行在 Redis 上。 Redis7:百萬數據級Redis Search 超越 ElasticSearch Redis Search是基于Redis的全文搜索引擎模塊(RediSearch)&#xff0c…

菜譜大全——字符串處理藝術:從文本解析到高效搜索 [特殊字符][特殊字符]

目錄 前言一、現實場景二、技術映射2.1 基礎刀工:String類2.2 高效剁餡:StringBuilder2.3 精準雕刻:正則表達式 三、知識點呈現3.1 String vs StringBuilder vs StringBuffer3.2 正則表達式核心語法速查3.3 字符串拼接性能陷阱 四、代碼實現五…

webpack+vite前端構建工具 -答疑

webpack答疑 1 輸入webpack命令,執行的是全局版本還是本地版本的webpack 當在命令行窗口輸入webpack命令時,其執行優先級可通過以下步驟明確判斷: 1.1 【全局安裝優先機制】 執行原理:系統會按照環境變量PATH的順序逐級查找可執…

API接口開放平臺 Crabc 3.4 發布

Crabc 是一款 API 接口開發平臺,企業級接口管理、SQL2API 平臺。支持動態數據源、動態 SQL 和標簽, 支持接入(mysql、oracle、達夢、TiDB、hive、es 和 mongodb)等 SQL 或 NoSQL 數據源,在線可視化編寫 SQL 快速發布接…

PD快充協議芯片XSP04D支持全協議+支持串口通訊+支持與主板共用一個Type-C

隨著Type-C接口的充電器普及,市面上的PD充電器越來越多,小家電產品可不配充電器,使用Type-C接口,然后加入一顆PD協議取電協議芯片XSP08即可讓充電器/充電寶/車充等電源輸出9V/12V/15V/20V電壓給產品供電。 針對各種各樣的不同需求…

C# 高效加載txt文件內容

在 C# 中,高效加載 TXT 文件內容可以通過多種方法實現,具體方法的選擇取決于文件的大小和讀取需求。以下是一些常用的方法: 1. 使用 File.ReadAllText 如果文件比較小,并且你希望一行一行地讀取整個內容,可以使用 Fi…

(2)pytest執行用例的規則

1. 簡介 今天主要學習一下pytest的執行用例的規則。 2. 通過help幫助查看pytest如何使用 .查看pytest命令行參數,可以用pytest -h 或pytest --help查看 3. 用例設計原則 文件名以test_*.py文件和*_test.py以test_開頭的函數以Test開頭的類以test_開頭的方法所有的…

InnoDB數據頁

導讀: 我們已經知道了頁是數據庫存儲的基本單位,知道了一條行記錄的存儲格式是怎樣的,當數據越來越多時,那一條條行記錄具體又是怎么在頁中被組織起來的呢? 一、InnoDB數據頁結構 二、總結 1、一條條行數據是如何在數…

世賽背景下,中職物聯網應用與服務賽項實訓解決方案

一、世賽背景與物聯網應用賽項概述 1.1 世賽發展歷程及對中職教育的影響 世界技能大賽(WorldSkills Competition,簡稱世賽)自1950年創立以來,已經成為全球范圍內展示職業技能水平的重要賽事。截至2024年,世賽已成功舉…

【攻防篇】解決:阿里云docker 容器中自動啟動xmrig挖礦-- 實戰

文章目錄 場景一、問題二、原因三、解決方案1、控制臺處理2、 [清除與防護](https://blog.csdn.net/ladymorgana/article/details/148921668?spm1001.2014.3001.5501)1. 緊急處理:停止挖礦進程2. 清理被感染的容器3. 防護措施:防止再次被入侵4. 排查入侵…

飛算智造JavaAI:智能編程革命——AI重構Java開發新范式

文章目錄 引言:當傳統Java開發遇上AI一、技術架構解析1.1 核心架構圖1.2 關鍵技術棧 二、實戰演示:從需求到代碼的全AI輔助2.1 場景:電商優惠券系統開發2.2 代碼生成實例2.3 智能調試演示 三、與傳統開發模式對比測試3.1 基準測試數據3.2 典型…