1. 程式人生 > >elasticsearch 短語查詢(match_phrase)

elasticsearch 短語查詢(match_phrase)

1、match_phrase

就像 match 查詢對於標準全文檢索是一種最常用的查詢一樣,當你想找到彼此鄰近搜尋詞的查詢方法時,就會想到 match_phrase 查詢

GET /my_index/my_type/_search
{
    "query": {
        "match_phrase": {
            "title": "quick brown fox"
        }
    }
}
類似 match 查詢, match_phrase 查詢首先將查詢字串解析成一個詞項列表,然後對這些詞項進行搜尋,但只保留那些包含 全部 搜尋詞項,且 位置 與搜尋詞項相同的文件,且中間不許夾雜其他詞
。 比如對於 quick fox 的短語搜尋可能不會匹配到任何文件,因為沒有文件包含的 quick 詞之後緊跟著 fox 。

2、詞項的位置

當一個字串被分詞後,這個分析器不但會返回一個詞項列表,而且還會返回各詞項在原始字串中的 位置 或者順序關係:

GET /_analyze?analyzer=standard
Quick brown fox

返回:

{
   "tokens": [
      {
         "token": "quick",
         "start_offset": 0,
         "end_offset": 5,
         "type": "<ALPHANUM>",
         "position": 1 
      },
      {
         "token": "brown",
         "start_offset": 6,
         "end_offset": 11,
         "type": "<ALPHANUM>",
         "position": 2 
      },
      {
         "token": "fox",
         "start_offset": 12,
         "end_offset": 15,
         "type": "<ALPHANUM>",
         "position": 3 
      }
   ]
}

 

position 代表各詞項在原始字串中的位置。

位置資訊可以被儲存在倒排索引中,因此 match_phrase 查詢這類對詞語位置敏感的查詢, 就可以利用位置資訊去匹配包含所有查詢詞項,且各詞項順序也與我們搜尋指定一致的文件,中間不夾雜其他詞項

3、什麼是短語:

一個被認定為和短語 quick brown fox 匹配的文件,必須滿足以下這些要求:

  • quick 、 brown 和 fox 需要全部出現在域中。
  • brown 的位置應該比 quick 的位置大 1 。
  • fox 的位置應該比 quick 的位置大 2 。

如果以上任何一個選項不成立,則該文件不能認定為匹配。


本質上來講,match_phrase 查詢是利用一種低級別的 span 查詢族(query family)去做詞語位置敏感的匹配。 Span 查詢是一種詞項級別的查詢,所以它們沒有分詞階段;它們只對指定的詞項進行精確搜尋。

值得慶幸的是,match_phrase 查詢已經足夠優秀,大多數人是不會直接使用 span 查詢。 然而,在一些專業領域,例如專利檢索,還是會採用這種低級別查詢去執行非常具體而又精心構造的位置搜尋。

相關推薦

elasticsearch 短語查詢match_phrase

1、match_phrase 就像 match 查詢對於標準全文檢索是一種最常用的查詢一樣,當你想找到彼此鄰近搜尋詞的查詢方法時,就會想到 match_phrase 查詢。 GET /my_index/my_type/_search { "query": {

elasticsearch初學 查詢match

match 查詢                         &

SpringBoot整合Elasticsearch遊標查詢scroll

## 遊標查詢(scroll)簡介 `scroll` 查詢 可以用來對 Elasticsearch 有效地執行大批量的文件查詢,而又不用付出深度分頁那種代價。 遊標查詢會取某個時間點的快照資料。 查詢初始化之後索引上的任何變化會被它忽略。 它通過儲存舊的資料檔案來實現這個特性,結果就像保留初始化時的索引 檢

ElasticSearch查詢

一、Query String search   新增測試資料 PUT test_search { "mappings": { "test_type": { "properties": { "dname": { "type": "text",

Elasticsearch學習筆記批量查詢mget、批量增刪改bulk

出錯 color body 換行 nor test 增刪 doc document 一、批量查詢 mget GET /_mget { "docs":[ { "_index":"ecommerce

Elasticsearch通關教程:如何通過SQL查詢Elasticsearch

  這篇博文字來是想放在全系列的大概第五、六篇的時候再講的,畢竟查詢是在索引建立、索引文件資料生成和一些基本概念介紹完之後才需要的。當前面的一些知識概念全都講解完之後再講解查詢是最好的,但是最近公司專案忙經常加班,畢竟年底了。但是不寫的話我怕會越拖越久,最後會不了了之了,所以剛好上海週末下雪,天冷無法出門,就

ElasticSearch學習總結查詢總結

本文主要對Elasticsearch中查詢相關的知識做一個簡單的總結,內容主要包括查詢的評分機制,查詢改寫,過濾器,以及對常見的查詢做一個簡單的分類 1. 評分機制 在Lucense中預設使用TF/IDF演算法對文件進行評分,該演算法已經在前文做了簡單的介紹,這裡主要總結下什麼樣的因

ElasticSearch RestHighLevelClient 教程 刪除&&查詢刪除

前言 ​ 刪除文件作為ES操作中重要的一部分,其必要性毋庸置疑。而根據官網文件api可知,有兩種刪除方式:一是直接根據index,type,id直接刪除,而第二種是查詢刪除,也就是所謂的Delete By Query API。 ​ 第一種刪除方式因為

Elasticsearch 基本查詢Query查詢

基本查詢(Query查詢) 資料準備及簡單查詢 //首先做一個數據準備,建立一個索引 PUT /lib3 { "settings": { "number_of_shards": 3, "number_of_re

MySQL範圍查詢日期

查詢 舉例 jpg 結構 datetime 日期 span mes sta MySQL的時間和日期類型 數據類型 字節數 數據格式 year 1 YYYY date 4 YYYY-MM-DD time 3 HH:MM:SS datetime 8 YY

oracle入門之對表數據查詢

取值 無法 排除 avg 臨時表 多表 單行 pan 相同 oracle表復雜查詢--子查詢 什麽是子查詢? 子查詢是指嵌入在其它sql語句中的select語句,也叫嵌套查詢。 單行子查詢 單行子查詢是指只返回一行數據的子查詢語句。 請思考:如果顯示與smith同一部門

連表查詢3之根據相關條件,查詢另外一個表或多個表的某字段

兩個 mode object 添加 就會 resultmap control var 多個 1、送檢單位 代理商是從代理商表中取得數據 銷售人員從銷售表中取得數據 說一個簡單的思路: sql語句找到連接兩個表的條件,把另外一個表要用到的字段 寫一個 <re

多線程數據庫查詢ADO

eof field mos variant conn query ati button 建立 ADO多線程數據庫查詢通常會出現3個問題: 1、CoInitialize 沒有調用(CoInitialize was not called);所以,在使用任何dbGo對象前,必須手

數據庫查詢學習心得

wid 數據庫 動態 placement ... ediff 如果 新的 star 數據查詢(二) 一.聚合函數 主要函數 類型 COUNT() 統計元組或列的個數 MIN() 統計元組或列的最小值 SUM() 統計元組或列的

Mybatis模糊查詢like

val ons param pass bin size user att pat 1. 參數中直接加入%% param.setUsername("%CD%");param.setPassword("%11%"); <select id="selectPerson

Linq to SQL 的連表查詢

equal query 交集 數據庫 調用 數據 變量 bst log 關於數據庫的查詢中經常需要用到多表的連接查詢,這裏就簡單地展示關於linq的查詢功能。 1、單表的查詢 [csharp] view plain copy var query = from

Java搜索引擎選擇: Elasticsearch與Solr

文件格式 article base 使用 社區 run 穩定 tails 定制 Elasticsearch簡介 Elasticsearch是一個實時的分布式搜索和分析引擎。它可以幫助你用前所未有的速度去處理大規模數據。 它可以用於全文搜索,結構化搜索以及分析,當然你也可

Elasticsearch短語搜索——match_phrase

ren host ear employ earch port div roc 3.2   找出一個屬性中的獨立單詞是沒有問題的,但有時候想要精確匹配一系列單詞或者短語 。 比如, 我們想執行這樣一個查詢,僅匹配同時包含 “rock” 和 “climbing” ,並且 二者以

Elasticsearch學習筆記ElasticSearch分布式機制

clas cse 負載均衡 丟失 數據 不可 分布式 復雜 發生 一、Elasticsearch對復雜分布式機制透明的隱藏特性 1、分片機制: (1)index包含多個shard,每個shard都是一個最小工作單元,承載部分數據,lucen

Elasticsearch學習筆記核心概念和分片shard機制

服務器 存儲 play wid 讀寫 number 容錯 組成 操作 一、核心概念 1、近實時(Near Realtime NRT) (1)從寫入數據到數據可以被搜索到有一個小延遲(大概1秒); (2)基於es執行搜索和分析可以達到秒級