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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索

發布時間:2025/4/9 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章翻譯自Elasticsearch官方指南的Partial Matching一章。


查詢期間的即時搜索(Query-time Search-as-you-type)

如今讓我們來看看前綴匹配可以怎樣幫助全文搜索。

用戶已經習慣于在完畢輸入之前就看到搜索結果了 - 這被稱為即時搜索(Instant Search, 或者Search-as-you-type)。這不僅讓用戶可以在更短的時間內看到搜索結果。也可以引導他們得到真實存在于我們的索引中的結果。

比方。假設用戶輸入了johnnie walker bl,我們會在用戶輸入完畢前顯示Johnnie Walker Black Label和Johnnie Walker Blue Label相關的結果。

和往常一樣,有多種方式可以達到我們的目的。首先我們從最簡單的方式開始。你不須要以不論什么的方式準備你的數據,就行在不論什么全文字段(Full-text Field)上實現即時搜索。

在短語匹配(Phrase Matching)中。我們介紹了match_phrase查詢,它可以依據單詞順序來匹配全部的指定的單詞。對于查詢期間的即時搜索,我們可以使用該查詢的一個特例,即match_phrase_prefix查詢:

{"match_phrase_prefix" : {"brand" : "johnnie walker bl"} }

次查詢和match_phrase查詢的工作方式基本同樣。除了它會將查詢字符串中的最后一個單詞當做一個前綴。換言之,前面的樣例會查找下面內容:

  • johnnie
  • 緊接著的是walker
  • 緊接著的是以bl開頭的單詞

假設我們將該查詢通過validate-query API運行,它會產生例如以下的解釋:

"johnnie walker bl*"

和match_phrase查詢一樣。它可以接受一個slop參數(參見這里)來讓單詞間的順序和相對位置不那么嚴格:

{"match_phrase_prefix" : {"brand" : {"query": "walker johnnie bl", "slop": 10}} }

可是,查詢字符串中的最后一個單詞總是會被當做一個前綴。

在之前介紹prefix查詢的時候,我們談到了prefix查詢的一些須要注意的地方 - prefix查詢時怎樣消耗資源的。在使用match_phrase_prefix查詢的時候,也面臨著相同的問題。一個前綴a你可以匹配很許多的詞條。匹配這么多的詞條不僅會消耗許多資源,同一時候對于用戶而言也是沒有多少用處的。

我們能夠通過將參數max_expansions設置成一個合理的數值來限制前綴擴展(Prefix Expansion)的影響,比方50:

{"match_phrase_prefix" : {"brand" : {"query": "johnnie walker bl","max_expansions": 50}} }

max_expansions參數會控制可以匹配該前綴的詞條的數量。它會找到首個以bl開頭的詞條然后開始收集(以字母表順序)直到全部以bl開頭的詞條都被遍歷了或者得到了比max_expansions很多其它的詞條。

不要忘了在用戶每敲入一個字符的時候。該查詢就要被運行一次。因此它的速度須要快。假設第一個結果集不符合用戶的期望,那么他們就會繼續輸入直到得到他們須要的結果。


轉載于:https://www.cnblogs.com/yxwkf/p/5247811.html

總結

以上是生活随笔為你收集整理的[Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索的全部內容,希望文章能夠幫你解決所遇到的問題。

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