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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Elasticsearch--建议器

發(fā)布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch--建议器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 可用的建議器類型
  • term建議器
    • term建議器的配置選項
  • phrase建議器
  • completion建議器

在考慮性能的情況下,允許用戶的拼寫錯誤,以及構建一個自動完成功能

可用的建議器類型

  • term:更正每個傳入的單詞,在非短語查詢中有用,比如單詞條查詢
  • phrase:工作的短語上,返回一個恰當?shù)亩陶Z
  • completion:提供高效的自動完成功能

    包含建議器

    在查詢的結果中獲得建議。例如,使用match_all查詢嘗試為serlock holnes短語得到一個建議,該短語包含兩個拼寫錯誤的詞條。
{"query":{"match_all":{}},"suggest":{"first_suggestion":{"text":"serlock honles","term":{"field":"_all"}}} }

如果想要從多個字段上得到建議,可以加入second_suggestion(或者其他名字),當然與first_suggestion同一級別。響應如下:

{"suggest":{"first_suggestion":[{"text":"serlock","offset":0,"length":7,"option":[{"text":"sherlock","score":0.7866684,"freq":1}]},{"text":"honles","offset":8,"length":6,"option":[{"text":"holmes","score":0.7866684,"freq":1}]}]} }

這里只保留了最重要的部分,前面還有其他的輸出信息。

term建議器為text參數(shù)中的每個詞條返回一個可能的建議列表。offset是原始單詞在text參數(shù)中的偏移量。

options數(shù)組包含了給定單詞的建議,如果elasticsearch沒有找到任何建議,它將為空。

  • text:該屬性定義了建議的文本
  • score:定義了建議的得分,得分越高,建議越好
  • freq:建議的頻率,代表了在我們執(zhí)行查詢的索引上,該單詞出現(xiàn)在文檔中的次數(shù)

term建議器

term建議器基于字符串的編輯距離

term建議器的配置選項

term建議器的常見配置項還可以用在基于term建議器的所有建議器上,如phrase建議器

  • text(必須):定義了希望得到建議的文本
  • field(必須):為哪個字段生成建議
  • analyzer:用于分析text參數(shù)提供的文本,如果不提供就使用field字段的分析器
  • size:默認是5,指定text參數(shù)中每天詞條可以返回的建議的最大數(shù)字
  • sort:返回建議的排序方式,默認此選項設置成score,將首先按照得分排,然后按文檔頻率,最后按詞條排。第二個可能值frequency,先按文檔頻率,然后按分數(shù),最后按詞條

    額外建議器選項

  • lowcase_terms:true時,把從text字段生成的所有經(jīng)分析的詞條變成小寫
  • max_edits:默認2,指定詞條允許的最大編輯距離,可選的值有1或2
  • prefix_len:默認1,增加這個值可以提高整體性能,因為需要處理更少數(shù)量的建議
  • min_word_len:默認4,指定返回的建議列表中詞條的最少字符數(shù)
  • shard_size:默認是size參數(shù)的值,設定每個分片上應該讀取的最大建議數(shù)量。如果設置的值比size參數(shù)的值大,會得到更準確的文檔頻率,但性能會降低

phrase建議器

term建議器基于詞條糾正錯誤,但對短語不夠好。phrase建議器基于term建議器,但添加了額外的短語計算邏輯。

{"suggest":{"text":"sherlock holnes","our_suggestion":{"phrase":{"field":"_all"}}} }

返回結果

{"suggest":{"our_suggestion":[{"text":"sherlock holnes","offset":0,"length":15,"option":[{"text":"sherlock holmes","score":0.7866684}]}]} }

與term返回相比,返回的是一個短語。

phrase建議器相比term建議器增加的額外選項。

  • max_errors:指定可糾正的短語中包含錯誤詞條的最大數(shù)目、或最大百分比。可以設置成整型值或者0到1之間的浮點數(shù)。默認是1,意味著給點短語中最多包含1個錯誤拼寫的詞條。

completion建議器

該建議器允許創(chuàng)建自動完成功能,并且性能很好,這是因為可以在索引中存儲復雜結構,而不是在查詢時計算。

為了使用該基于前綴的建議器,需要建立索引時引入一個completion的專用字段。假設建立一個自動完成功能來顯示圖書的作者。除了作者的名字以外,希望返回該作者寫的圖書的標示符,先創(chuàng)建一個author索引:

使用completion類型定義ac字段,payload:隨建議一起返回一個額外的選項信息。

索引數(shù)據(jù)
先插入兩條數(shù)據(jù)

input屬性提供了建議器用來生成自動完成功能的輸入信息,它將用于匹配用戶的輸入,output屬性定義應該為文檔返回什么數(shù)據(jù)

查詢索引中那個completion建議器數(shù)據(jù)
想找作者名字以fyo開頭的文檔,可以執(zhí)行

可以看到,我們在_suggest端點執(zhí)行命令,因為不想執(zhí)行標準查詢,只對自動完成結果感興趣。執(zhí)行結果如下:

也可使用模糊查詢來容忍拼寫錯誤,在查詢中包含一個額外的fuzzy節(jié)點。

定制權重
默認情況下,詞頻將用來決定前綴建議器返回文檔的權重,然而這有時不是最好的方案,可以通過為定義成completion的字段指定一個weight屬性來定義建議的權重。weight屬性是一個整型值,越大建議越重要。為一個文檔指定權重,命令如下:

匹配到該文檔的completion建議結果中該文檔的權重都會是30。

轉載于:https://www.cnblogs.com/51zone/p/9841009.html

總結

以上是生活随笔為你收集整理的Elasticsearch--建议器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。