日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

03.full_text interval查询

發布時間:2024/2/28 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03.full_text interval查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. intervals query 簡介
    • 2. 樣例
    • 3. match
    • 4. all_of
    • 5. any_of
    • 6. filter

full text查詢就是基于分詞的查詢,有很多分類

intervals query intervals查詢: 全文查詢,可以對匹配項的順序和接近度進行細粒度控制。
match query匹配查詢: 用于執行全文查詢的標準查詢,包括模糊匹配和短語或接近查詢。
match_bool_prefix查詢: 創建一個布爾查詢,將與每個詞匹配的詞查詢作為詞查詢,但最后一個詞除外,后者作為前綴查詢匹配
match_phrase查詢: 類似于匹配查詢,但用于匹配精確短語或單詞接近匹配。
match_phrase_prefix查詢: 類似于match_phrase查詢,但是對最后一個單詞進行通配符搜索。
multi_match query多重匹配查詢: 匹配查詢的多字段版本。
common terms query 常用詞查詢: 一個更專業的查詢,它對不常見的單詞給予更多的偏愛。
query_string查詢: 支持緊湊的Lucene查詢字符串語法,允許您在單個查詢字符串中指定AND | OR | NOT條件和多字段搜索。僅限于專業用戶。
simple_query_string查詢: 適用于直接向用戶公開的query_string語法的更簡單,更可靠的版本。

1. intervals query 簡介

根據匹配項的順序和接近程度返回文檔。

intervals查詢使用匹配規則,該規則由一小組定義構成。然后將這些規則應用于指定字段中的term。

這些定義產生的最小intervals序列跨越了文本主體中的各個術語。這些intervals可以由父源進一步組合和過濾。

2. 樣例

下面的查詢會返回有"my favorite food hot water"或者"my favorite food cold porridge " 的docment
但是"when it’s cold my favorite food is porridge" 的doc則不會被召回

PUT interval/_doc/1 { "my_text" : "my favorite food hot water" }PUT interval/_doc/2 {"my_text" : "my favorite food cold porridge"}PUT interval/_doc/3 {"my_text":"when it’s cold my favorite food is porridge" }POST _search {"query": {"intervals" : {"my_text" : { # 這里是你要進行interval query的field"all_of" : {"ordered" : true,"intervals" : [{"match" : {"query" : "my favorite food","max_gaps" : 0,"ordered" : true}},{"any_of" : {"intervals" : [{ "match" : { "query" : "hot water" } },{ "match" : { "query" : "cold porridge" } }]}}]}}}} }

上面的my_text對應的是一個field的name,然后my_text的value就是一個查詢rule object,
這個rule object一共可以有四種類型

match
all_of
any_of
filter

3. match

match rule object的參數
query: (必需,字符串)希望在提供的中找到的文本。
max_gaps: (可選,整數)匹配項之間的最大位置數。除此以外的術語不視為匹配項。默認為-1。如果未指定或設置為-1,則對匹配沒有寬度限制。如果設置為0,則這些術語必須彼此相鄰。
ordered:(可選,布爾值)如果為true,則匹配詞必須以其指定順序出現。默認為false。
analyzer: (可選,字符串)分析器,用于分析查詢中的術語。默認為頂級的分析器。
filter: (可選,intervals過濾器規則對象)可選intervals過濾器。
use_field: (可選,字符串)如果指定,則匹配該字段而不是頂級的intervals。使用該字段中的搜索分析器分析術語。這樣,您就可以跨多個字段進行搜索,就好像它們都是同一字段一樣。例如,您可以將相同的文本編入詞干和未詞干字段中,并在未詞干的字段附近搜索詞干標記。

4. all_of

all_of規則返回匹配其他規則組合的匹配項。

intervals:(必需,規則對象數組)要組合的規則數組。所有規則都必須在文檔中產生匹配項,以使整個源匹配。
max_gaps: (可選,整數)匹配項之間的最大位置數。由規則產生的intervals比此intervals更遠將不視為匹配。默認為-1。如果未指定或設置為-1,則對匹配沒有寬度限制。如果設置為0,則這些術語必須彼此相鄰。
ordered: (可選,布爾值)如果為true,則規則所產生的intervals應按其指定的順序顯示。默認為false。
filter: (可選,intervals過濾器規則對象)用于過濾返回的intervals的規則。

5. any_of

any_of規則返回其任何子規則產生的interval。

intervals:(必需,規則對象數組)要匹配的規則數組。
filter: (可選,intervals過濾器規則對象)用于過濾返回的intervals的規則。

6. filter

過濾器規則基于查詢返回intervals。有關示例,請參見過濾器示例。

after:(可選,查詢對象)查詢用于返回遵循過濾規則intervals的intervals。
before: (可選,查詢對象)查詢用于返回在過濾規則的intervals之前發生的intervals。
contains_by: (可選,查詢對象)用于返回過濾規則中某個intervals所包含的intervals的查詢。
containing:(可選,查詢對象)用于返回包含來自過濾規則的intervals的intervals的查詢。
not_contained_by: (可選,查詢對象)查詢用于返回過濾規則中某個intervals未包含的intervals。
not_contain:(可選,查詢對象)用于返回不包含來自過濾規則的intervals的intervals的查詢。
not_overlapping: (可選,查詢對象)查詢用于返回與過濾規則的intervals不重疊的intervals。
overlapping: (可選,查詢對象)查詢用于返回與過濾規則中的intervals重疊的intervals。
script: (可選,腳本對象)用于返回匹配文檔的腳本。該腳本必須返回布爾值true或false。有關示例,請參見腳本過濾器。

樣例

POST _search {"query": {"intervals" : {"my_text" : {"match" : {"query" : "hot porridge","max_gaps" : 10,"filter" : {"not_containing" : {"match" : {"query" : "salty"}}}}}}} } POST _search {"query": {"intervals" : {"my_text" : {"match" : {"query" : "hot porridge","filter" : {"script" : {"source" : "interval.start > 10 && interval.end < 20 && interval.gaps == 0"}}}}}} }

intervals查詢始終將intervals最小化,以確保查詢可以線性運行。有時這可能會導致令人驚訝的結果,尤其是在使用max_gaps限制或過濾器時。例如,采用以下查詢,
則擁有"hot porridge is salty porridge" 的字段的doc不會被返回,因為contained_by只會返回他命中的那一部分,在這里,只會命中"hot porridge is salty porridge" 前面兩個單詞,那么salt就沒有辦法匹配了

POST _search {"query": {"intervals" : {"my_text" : {"match" : {"query" : "salty","filter" : {"contained_by" : {"match" : {"query" : "hot porridge"}}}}}}} }

總結

以上是生活随笔為你收集整理的03.full_text interval查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。