国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo

這篇具有很好參考價值的文章主要介紹了Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

自動補全

定義映射字段

下面的請求定義了一個名為 “book” 的 Elasticsearch 索引,其中包含一個 具有 “text” 數(shù)據(jù)類型和 “standard” 分析器且名為 “title” 的字段。此字段用于處理書籍標題的文本數(shù)據(jù)。定義了名為 “suggest” 的 “completion” 子字段,用于支持實時搜索建議的自動補全功能。

PUT /book
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "standard",
        "fields": {
          "suggest": {
            "type": "completion"
          }
        }
      }
    }
  }
}

建立索引

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)
增加測試數(shù)據(jù)

PUT /book/_doc/1
{
  "title":"散文精選"
}

PUT /book/_doc/2
{
  "title":"三國演義"
}

PUT /book/_doc/3
{
  "title":"三體二:黑暗森林"
}

測試自動補全

POST /book/_search
{
  "suggest": {
    "book-suggest": {
      "prefix": "三",
      "completion": {
        "field": "title.suggest",
        "size": 5
      }
    }
  }
}

查詢結(jié)果如下:
Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

自動糾錯

查詢語句

使用 “fuzzy” 參數(shù)來實現(xiàn)模糊匹配,即允許在查詢中包含一定數(shù)量的拼寫錯誤??梢愿鶕?jù)需要調(diào)整 “fuzziness” 的值,以容忍更多或更少的拼寫錯誤

POST /book/_search
{
  "suggest": {
    "book-suggest": {
      "prefix": "三國眼",
      "completion": {
        "field": "title.suggest",
        "size": 5,
         "fuzzy": {
          "fuzziness": 2
        }
      }
    }
  }
}

查詢結(jié)果

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

拼音補全與繁簡轉(zhuǎn)換

拼音分詞器(pinyin analyzer)通常需要自行引入,因為它不是 Elasticsearch 的默認分詞器??梢允褂?Elasticsearch 的插件來引入 pinyin 分詞器,以便在索引中使用它。

安裝 elasticsearch-analysis-pinyin 插件

選擇與自己版本一致的版本,插件地址:
https://github.com/medcl/elasticsearch-analysis-pinyin/releases

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)
elasticsearch-analysis-pinyin分詞器目前沒有下載即可使用的安裝包,需要自己下載源碼進行編譯??梢栽陧椖磕夸?code>elasticsearch-analysis-pinyin\target\releases看到編譯后的結(jié)果elasticsearch-analysis-pinyin-7.17.11.zip

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

然后在es的安裝目錄下plugins目錄下新建pinyin目錄,并將解壓后的文件復(fù)制到該目錄下
Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)
重啟es,啟動日志中已經(jīng)加載了拼音插件
Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

定義索引與映射

PUT /book_pinyin
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "pinyin_analyzer": {
            "tokenizer": "my_pinyin"
          }
        },
        "tokenizer": {
          "my_pinyin": {
            "type": "pinyin",
            "keep_separate_first_letter": false,
            "keep_full_pinyin": true,
            "keep_original": true,
            "limit_first_letter_length": 16,
            "lowercase": true,
            "remove_duplicated_term": true
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "standard",
        "fields": {
          "suggest": {
            "type": "completion",
            "analyzer": "pinyin_analyzer"
          }
        }
      }
    }
  }
}

建立拼音自動補全索引

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

測試拼音自動補全

  • 增加測試數(shù)據(jù)
    PUT /book_pinyin/_doc/1
    {
      "title":"散文精選"
    }
    
    PUT /book_pinyin/_doc/2
    {
      "title":"三國演義"
    }
    
    PUT /book_pinyin/_doc/3
    {
      "title":"三體二:黑暗森林"
    }
    
    PUT /book_pinyin/_doc/4
    {
      "title":"三國演義"
    }
    
    
  • 執(zhí)行檢索
POST /book_pinyin/_search
{
  "suggest": {
    "book-suggest": {
      "prefix": "san",
      "completion": {
        "field": "title.suggest",
        "size": 5,
         "fuzzy": {
          "fuzziness": 2
        }
      }
    }
  }
}

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

測試繁簡轉(zhuǎn)換自動補全

我們這里實現(xiàn)了拼音轉(zhuǎn)換后已經(jīng)實現(xiàn)了繁簡轉(zhuǎn)換
Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

代碼實現(xiàn)

demo結(jié)構(gòu)

簡單創(chuàng)建一個springboot項目,使用html實現(xiàn)了一個簡單的demo
Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

實現(xiàn)效果如下:
Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo,Elasticsearch,elasticsearch,jenkins,大數(shù)據(jù)

demo獲取

自動補全-官方文檔

Completion Suggester 是 Elasticsearch 提供的自動補全和搜索即時提示的功能。這是一種導(dǎo)航功能,可引導(dǎo)用戶在鍵入時找到相關(guān)結(jié)果,從而提高搜索準確性。請注意,它不適用于拼寫校正或類似 term 或 phrase suggesters 的“您是不是要這樣說”功能。

理想情況下,自動補全功能應(yīng)該與用戶輸入同步,以提供與用戶已經(jīng)鍵入的內(nèi)容相關(guān)的即時反饋。因此,Completion Suggester 針對速度進行了優(yōu)化。該建議器使用數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)快速查找,但構(gòu)建和存儲這些數(shù)據(jù)結(jié)構(gòu)是昂貴的,并且存儲在內(nèi)存中。

映射(Mapping)

要使用此功能,需要為字段指定一個特殊的映射,以便為快速補全建議索引字段值。

PUT music
{
  "mappings": {
    "properties": {
      "suggest": {
        "type": "completion"
      },
      "title": {
        "type": "keyword"
      }
    }
  }
}

映射支持以下參數(shù):

  • analyzer:用于索引的分析器,默認為 simple。
  • search_analyzer:用于搜索的分析器,默認為與 “analyzer” 相同。
  • preserve_separators:保留分隔符,默認為 true。如果禁用,您可能會找到以 “Foo Fighters” 開頭的字段,如果建議輸入為 “foof”。
  • preserve_position_increments:啟用位置增量,默認為 true。如果禁用并使用停用詞分析器,建議輸入 “b” 時,您可能會得到以 “The Beatles” 開頭的字段。請注意:如果能夠豐富數(shù)據(jù),也可以通過索引兩個輸入 “Beatles” 和 “The Beatles” 來實現(xiàn),無需更改簡單分析器。
  • max_input_length:限制單個輸入的長度,默認為 50 個 UTF-16 代碼點。此限制僅在索引時使用,以減少每個輸入字符串的字符總數(shù),以防止底層數(shù)據(jù)結(jié)構(gòu)膨脹。在大多數(shù)情況下,默認值不會對使用產(chǎn)生影響,因為前綴建議很少會增長到比一小撮字符長的前綴。

索引(Indexing)

索引建議與索引其他字段的數(shù)據(jù)相似。建議由輸入和可選的權(quán)重屬性組成。輸入是建議查詢中預(yù)期匹配的文本,而權(quán)重確定建議的評分。索引建議的示例如下:

PUT music/_doc/1?refresh
{
  "suggest" : {
    "input": [ "Nevermind", "Nirvana" ],
    "weight" : 34
  }
}

支持以下參數(shù):

  • input:要存儲的輸入,可以是字符串數(shù)組或僅為字符串。此字段是必需的。該值不能包含以下 UTF-16 控制字符:\u0000(null)、\u001f(信息分隔符一)、\u001e(信息分隔符二)。
  • weight:正整數(shù)或包含正整數(shù)的字符串,用于定義權(quán)重,可用于排列建議。此字段是可選的。

您還可以使用以下簡化形式,但請注意,在簡化形式中不能為建議指定權(quán)重。

PUT music/_doc/1?refresh
{
  "suggest" : [ "Nevermind", "Nirvana" ]
}

查詢(Querying)

建議查詢與通常查詢相似,不同之處在于您必須將建議類型指定為 “completion”。建議是近實時的,這意味著通過 “refresh” 可以立即顯示新建議,已刪除的文檔永遠不會被顯示。

下面是一個查詢的示例:

POST music/_search?pretty
{
  "suggest": {
    "song-suggest": {
      "prefix": "nir",
      "completion": {
        "field": "suggest"
      }
    }
  }
}

在查詢結(jié)果中,Elasticsearch 將返回與用戶輸入前綴匹配的建議。您可以使用這些建議為用戶提供搜索建議。

自動補全建議還支持模糊查詢和正則表達式查詢,以處理用戶輸入中的拼寫錯誤或其他變化。這些查詢可以通過 "fuzzy""regex" 參數(shù)進行配置。

請注意,默認情況下,“_source” 元數(shù)據(jù)字段是啟用的,以便返回建議的源數(shù)據(jù)。建議的權(quán)重通過 “_score” 返回。默認情況下,建議返回完整文檔的 “_source”。如果 _source 大小會影響性能,可以使用源過濾來減小 _source 大小。

以上是使用 Completion Suggester 的基本概述。根據(jù)需求,您可以進一步配置和定制自動補全建議。 Completion Suggester 可以考慮索引中的所有文檔。對于如何查詢文檔子集的詳細信息,請查看上下文建議(Context Suggester)。

如果一個建議查詢跨越多個分片,建議會在兩個階段執(zhí)行,最后一個階段從分片中獲取相關(guān)文檔,這意味著當建議跨多個分片時,在單個分片上執(zhí)行建議請求會更有效,因為建議涵蓋多個分片時需要執(zhí)行文檔提取開銷。為了獲得最佳的自動補全性能,建議將自動補全索引到單個分片索引中。如果由于分片大小而導(dǎo)致堆內(nèi)存使用過高,仍建議將索引分成多個分片,而不是為了優(yōu)化自動補全性能。

跳過重復(fù)建議

查詢可能會返回來自不同文檔的重復(fù)建議。通過將 "skip_duplicates" 設(shè)置為 true,可以修改此行為。設(shè)置為 true 時,此選項會減慢搜索,因為需要訪問更多的建議以查找前 N 個。

模糊查詢(自動糾錯)

Completion Suggester 還支持模糊查詢,這意味著您可以在搜索中出現(xiàn)拼寫錯誤,仍然可以獲得結(jié)果。

例如,以下是一個使用模糊查詢的查詢示例:

POST music/_search?pretty
{
  "suggest": {
    "song-suggest": {
      "prefix": "nor",
      "completion": {
        "field": "suggest",
        "fuzzy": {
          "fuzziness": 2
        }
      }
    }
  }
}

模糊查詢會根據(jù)查詢前綴與建議前綴的最長匹配來對建議進行評分。模糊查詢支持各種參數(shù),如 “fuzziness”、“transpositions”、“min_length”、“prefix_length” 和 “unicode_aware”,可以用于調(diào)整匹配的寬松程度和性能。

正則表達式查詢

Completion Suggester 還支持正則表達式查詢,這意味著您可以使用正則表達式來表示前綴。

例如,以下是一個使用正則表達式查詢的示例:

POST music/_search?pretty
{
  "suggest": {
    "song-suggest": {
      "regex": "n[ever|i]r",
      "completion": {
        "field": "suggest"
      }
    }
  }
}

正則表達式查詢可以包含各種參數(shù),如 “flags” 和 “max_determinized_states”,以用于調(diào)整匹配的方式和性能。文章來源地址http://www.zghlxwxcb.cn/news/detail-729513.html

到了這里,關(guān)于Elasticsearch實現(xiàn)檢索詞自動補全(檢索詞補全,自動糾錯,拼音補全,繁簡轉(zhuǎn)換) 包含demo的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Elasticsearch漢字補全和智能糾錯使用詳解

    Elasticsearch漢字補全和智能糾錯使用詳解

    漢字補全 拼寫糾錯

    2024年02月06日
    瀏覽(18)
  • Elasticsearch (ES) 搜索引擎: 文本搜索:分析器/分詞器、同義詞/停用詞、拼音搜索、高亮顯示、拼寫糾錯

    原文鏈接:https://xiets.blog.csdn.net/article/details/132349032 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Elasticsearch 專欄(總目錄) 文本搜索主要指的就是全文搜索,全文搜索是搜索引擎的核心功能,與精確匹配的結(jié)構(gòu)化數(shù)據(jù)不同,文本(text)數(shù)據(jù)在構(gòu)建索引和搜索時都需要進行額外的處

    2024年02月03日
    瀏覽(44)
  • ES(二)| 安裝ES、Kibana、IK分詞器、拼音分詞器(自動補全)

    ES(二)| 安裝ES、Kibana、IK分詞器、拼音分詞器(自動補全)

    上一篇:ES(一)| ES簡介、倒排索引、索引庫操作語法、文檔操作語法、Java使用RestClient進行ES操作 安裝包下載: 鏈接:https://pan.baidu.com/s/1Y1O0B8aG7qzRLFFVYo9nHw 提取碼:hdyc 因為我們還需要部署 kibana 容器,因此需要讓 es 和 kibana 容器互聯(lián)。這里先創(chuàng)建一個網(wǎng)絡(luò): 這里我采用

    2023年04月08日
    瀏覽(24)
  • Elasticsearch 系列(四)- DSL實現(xiàn)自動補全查詢

    Elasticsearch 系列(四)- DSL實現(xiàn)自動補全查詢

    本章將和大家分享如何通過 Elasticsearch 實現(xiàn)自動補全查詢功能。 1、自動補全需求說明 當用戶在搜索框輸入字符時,我們應(yīng)該提示出與該字符有關(guān)的搜索項,如圖: 2、使用拼音分詞 要實現(xiàn)根據(jù)字母做補全,就必須對文檔按照拼音分詞。在 GitHub 上恰好有 Elasticsearch 的 拼音分

    2024年03月17日
    瀏覽(21)
  • 【ElasticSearch】ES自動補全查詢與Java接口實現(xiàn)

    【ElasticSearch】ES自動補全查詢與Java接口實現(xiàn)

    自動補全就是當用戶在搜索框輸入字符時,我們應(yīng)該提示出與該字符有關(guān)的搜索項。 要實現(xiàn)根據(jù)字母做補全,就必須對文檔按照拼音分詞。GitHub上有相關(guān)插件,地址:https://github.com/medcl/elasticsearch-analysis-pinyin,下載和ES對應(yīng)的版本。 安裝步驟: 解壓 上傳到虛擬機中,elasti

    2024年02月15日
    瀏覽(20)
  • 網(wǎng)頁搜索自動補全功能如何實現(xiàn),Elasticsearch來祝佬“一臂之力”

    網(wǎng)頁搜索自動補全功能如何實現(xiàn),Elasticsearch來祝佬“一臂之力”

    前言:大家好,我是小威,24屆畢業(yè)生,在一家滿意的公司實習(xí)。本篇文章參考網(wǎng)上的課程,介紹Elasticsearch搜索引擎之自動補全功能的介紹與使用,這塊內(nèi)容不作為面試中的重點。 如果文章有什么需要改進的地方還請大佬不吝賜教 ????。 小威在此先感謝各位大佬啦~~????

    2023年04月15日
    瀏覽(16)
  • 【ElasticSearch】深入探索 ElasticSearch 對數(shù)據(jù)的聚合、查詢自動補全、與數(shù)據(jù)庫間的同步問題以及使用 RabbitMQ 實現(xiàn)與數(shù)據(jù)庫間的同步

    【ElasticSearch】深入探索 ElasticSearch 對數(shù)據(jù)的聚合、查詢自動補全、與數(shù)據(jù)庫間的同步問題以及使用 RabbitMQ 實現(xiàn)與數(shù)據(jù)庫間的同步

    在本文中,我們將深入探討 ElasticSearch 在數(shù)據(jù)處理中的關(guān)鍵功能,包括數(shù)據(jù)聚合、查詢自動補全以及與數(shù)據(jù)庫的同步問題。 首先,我們將聚焦于 ElasticSearch 強大的聚合功能,解釋什么是聚合以及如何通過 DSL 語句和 RestClient 實現(xiàn)各種聚合操作。這一功能能夠讓我們更深入地了

    2024年02月08日
    瀏覽(28)
  • Elasticsearch --- 數(shù)據(jù)聚合、自動補全

    Elasticsearch --- 數(shù)據(jù)聚合、自動補全

    聚合(aggregations) 可以讓我們極其方便的實現(xiàn)對數(shù)據(jù)的統(tǒng)計、分析、運算。例如: 什么品牌的手機最受歡迎? 這些手機的平均價格、最高價格、最低價格? 這些手機每月的銷售情況如何? 實現(xiàn)這些統(tǒng)計功能的比數(shù)據(jù)庫的sql要方便的多,而且查詢速度非常快,可以實現(xiàn)近實

    2024年02月04日
    瀏覽(37)
  • Elasticsearch聚合、自動補全 | 黑馬旅游

    Elasticsearch聚合、自動補全 | 黑馬旅游

    聚合(aggregations) 可以實現(xiàn)對文檔數(shù)據(jù)的統(tǒng)計、分析、運算。 聚合常見有三類: 桶聚合 Bucket :對文檔數(shù)據(jù)分組,并統(tǒng)計每組數(shù)量 TermAggregation:按照文檔字段值分組(有點像mysql的group by) Date Histogram:按照日期階梯分組,例如一周為一組,或者一月一組 度量聚合 Metric :對

    2024年02月01日
    瀏覽(28)
  • 微服務(wù)學(xué)習(xí)|elasticsearch:數(shù)據(jù)聚合、自動補全、數(shù)據(jù)同步

    微服務(wù)學(xué)習(xí)|elasticsearch:數(shù)據(jù)聚合、自動補全、數(shù)據(jù)同步

    聚合 (aggregations)可以實現(xiàn)對文檔數(shù)據(jù)的統(tǒng)計、分析、運算。聚合常見的有三類: 桶(Bucket)聚合:用來對文檔做分組 TermAggregation:按照文檔字段值分組 Date Histogram:按照日期階梯分組,例如一周為一組,或者一月為一組 度量(Metric)聚合:用以計算一些值,比如: 最大值、最小值、平均

    2024年02月04日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包