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

Elasticsearch同義詞最佳實踐

這篇具有很好參考價值的文章主要介紹了Elasticsearch同義詞最佳實踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????毫無疑問,使用同義詞是搜索工程師工具箱中最重要的技巧之一。盡管新手有時會低估同義詞的重要性,但幾乎所有搜索系統(tǒng)都離不開它。與此同時,人們有時仍會低估與使用同義詞相關(guān)的一些復(fù)雜情況和微妙情形,甚至高級用戶也不例外。

????????用好同義詞庫,在搜索的過程中,在提升召回率上,有著奇跡般的力量。

????????最近正在做同義詞庫的工作,在提升召回效果方面,確實有很大的貢獻(xiàn)。本篇文章中,將會詳細(xì)講解如何使用,其中的坑,以及各種玩法的最佳實踐。本篇博文還會回答一些有關(guān)同義詞使用方法的常見問題,并指出一些經(jīng)常需要注意的相關(guān)事項。

同義詞庫使用需求

  1. 提升召回率。提升召回效果。
  2. 詞庫熱更新需求。

前言、為什么要使用同義詞

這里引用官方博文的描述。

為幫助大家理解同義詞的巨大作用和靈活性,我們來快速看一下當(dāng)今大多數(shù)搜索引擎的內(nèi)在工作原理。搜索引擎會對文檔和查詢進(jìn)行分析并將其拆解為最小的單元(通常稱為詞元,實際上就是抽象的符號)。搜索時,匹配過程會使用簡單字串相似度,所以如果查詢中有一些十分微小的拼寫錯誤(例如“hous”,只比“house”少一個字母 e)或者使用名詞的復(fù)數(shù)形式(“houses”),即使文檔中包含名詞的單數(shù)形式(“house”),搜索引擎也不會匹配到這份文檔。詞干提取器或模糊查詢等工具雖然可以解決一些最常見的此類問題,但是它們并不能消除相關(guān)聯(lián)的概念或想法之間的差異,也不能將文檔或查詢中稍有不同的單詞用法視為等同。 這時同義詞就派上了大用場。同義詞的英文 synonym 來自于希臘語,分別是前綴 σ?ν(syn,表示“一起”)和 ?νομα(ónoma,表示“名稱”)。從它的詞源可以看出,同義詞表示的是在同一語言或領(lǐng)域中具有完全或基本相同意思的不同詞語。實際上,同義詞的范圍非常廣泛,包括一般同義詞(“疲勞”和“困倦”)、縮寫(英鎊的兩種寫法“l(fā)b.”和“pound”)、電商搜索中產(chǎn)品的不同拼寫(“iPod”和“i-Pod”)、細(xì)微的語言差異(例如均表示電梯的英式英語“l(fā)ift”和美式英語“elevator”)、專業(yè)用詞和普通用詞(例如“犬”和“狗”),甚至單純表示同一概念的兩種方式(“宇宙”和“太空”)。通過提供恰當(dāng)?shù)耐x詞規(guī)則,搜索工程師能夠就哪些詞在各自領(lǐng)域內(nèi)具有相似意思并應(yīng)該采取相似處理方法提供相關(guān)信息。 對搜索引擎而言,至為重要的是知道文檔中的哪個字詞與查詢內(nèi)容相匹配,即使它們可能看起來并不一樣。由于這涉及到十分具體的領(lǐng)域知識,所以用戶需要提供恰當(dāng)?shù)囊?guī)則。同義詞篩選器可在定制分析器中使用,其能夠基于用戶定義的規(guī)則替換或添加其他詞元,既可在索引時進(jìn)行以便在索引后的文檔中同時存儲這些內(nèi)容(例如詞語的兩種變體),也可在索引時進(jìn)行以擴(kuò)展搜索詞并匹配到更多相關(guān)文檔。我們稍后會討論這兩種方法的優(yōu)缺點。

官方的描述,總是很晦澀。其實很簡單,就是要解決我在本文開頭寫的兩個需求點。

一、關(guān)于同義詞最佳實踐問題

  1. 如何用好同義詞?

關(guān)于這個問題,其實應(yīng)該清楚它的工作原理。這里舉個例子,一篇文章中,用來描述被包圍了,可以用八方受敵,也可以用四面楚歌來描述。再結(jié)合ES的內(nèi)部存儲原理,我們可以選擇在索引階段,在文章中遇到八方來敵的時候,會在倒排表中添加八方來敵和四面楚歌這兩個詞,文檔id指向同一個。這個過程是同義詞在索引階段生效。

但是在索引階段生效,有很大的弊端。

  • 由于必須對所有同義詞進(jìn)行索引,所以索引規(guī)模會變大。整體存儲空間增加一倍甚至是幾倍。這在超大規(guī)模的集群中使用,絕對是無法接受的。想想300個節(jié)點的集群,增加一倍或者兩倍,老板絕對不會同意
  • 搜索得分(依賴于字詞統(tǒng)計數(shù)據(jù))可能會受影響,因為同義詞也會計算在內(nèi),所以不常見單詞的統(tǒng)計數(shù)據(jù)會存在偏差。這里和BM25相關(guān)性分?jǐn)?shù)有關(guān),以為詞頻會發(fā)生很大的變化。
  • 同義詞庫無法動態(tài)更新,除非進(jìn)行重新索引,否則無法針對既有文檔更改同義詞規(guī)則。在超大規(guī)模的集群中,更新一下詞庫,重跑一遍數(shù)據(jù),絕對不是一天兩天能完成的,動輒上月。

同義詞還可以在搜索階段生效。這可以完美的解決以上在索引階段生效的三個致命 的問題。其工作原理,理解起來也很容易,就是在搜索階段中的分詞的時候,匹配一下同 義詞。例如一次搜索中搜了八方受敵,但是,實際上邏輯是這樣的 (八方受敵 OR 四面 楚歌)。同樣,這樣做也是有代價的。它無法很大的應(yīng)對超多關(guān)鍵詞的檢索。假如你的一 次搜索 100個關(guān)鍵詞。經(jīng)過同義詞以后,有可能變成 200個甚至更多關(guān)鍵詞。

  • 檢索過程中的性能損失。如果本身檢索的關(guān)鍵詞不多,那影響微乎其微。假如本來檢索關(guān)鍵詞就很多,又開啟同義詞,性能損失絕對會在一倍以上?。?!即使是這樣,在搜索階段使用同義詞,也遠(yuǎn)好于在索引階段使用同義詞。
  • 檢索關(guān)鍵詞變多。檢索的過程中,花費的資源也會更多。這點主要體現(xiàn)在CPU上。

但是在搜索階段使用同義詞。它是能夠解決同義詞庫更新的需求的。統(tǒng)一詞庫可以隨 時變動。而這個更新成本,并不大。對于7.3版本以后的ES來說,僅僅是觸發(fā)一次reloadApi的事情。

POST my_index/_reload_search_analyzers

返回信息如下:

{
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "failed" : 0
  },
  "reload_details" : [
    {
      "index" : "my_index",
      "reloaded_analyzers" : [
        "synonym_analyzer" # 這里是我定義的帶有同義詞的分詞器。
      ],
      "reloaded_node_ids" : [
        "jiIC9zJyTES_dMIw0w6n8A",
        "dMKuVhnvQySXkO7AfZCXrA",
        "_6o86PMrRlegvJfB_G8bTw"
      ]
    }
  ]
}
    1. 同義詞庫的格式問題

ES中,同義詞庫可以有不同的格式。這里也有很多妙用!我舉三個例子

  • eg1 :上班 => 工作 干活
  • eg2 :高興,快樂,娛樂,興奮
  • eg3 : 工作 干活 => 上班

其中eg1,他的意思是,把上班,映射成兩個詞。假如你搜索上班,經(jīng)過分詞器以后,就變成了搜索 工作和干活。這樣適合在搜索階段使用??梢蕴嵘倩氐臄?shù)量和質(zhì)量。

其中eg2,它的意思是,遇到高興的時候,會分詞器會解析成,高興,快樂,娛樂,興奮這四個詞,同樣真正的搜索也是用這四個詞去搜索的。這樣適合在搜索階段使用??梢蕴嵘倩氐臄?shù)量和質(zhì)量。

其中eg3,它的意思是,把工作和干活映射成上班。這樣的可以應(yīng)用在索引階段。其實可以巧妙的幫業(yè)務(wù)去解決歸一化的問題。假如中國,cn,zh,chaina,中華人民共和國,都想映射成中國,做標(biāo)準(zhǔn)化的數(shù)據(jù),在檢索階段是可以提速的。同樣在索引階段也是可以節(jié)省倒排鏈的長度的。

二、實戰(zhàn)

實際操作一下。

  1. 是否使用插件?

同義詞其實是ES本身就有的能力。同義詞插件,通常是用來做熱更新的,或者是用來把詞庫放在遠(yuǎn)端(例如Nginx)。其實本質(zhì)上是解決更新問題的。假如說你的集群有幾百個節(jié)點,用本地詞庫,每次更新詞庫要更新幾百個節(jié)點,這操作起來多少有點麻煩。

  1. 如何使用同義詞?

在es里邊其實使用的是filter,添加一個filter即可,并把這個filte在分詞器中綁定。

Synonym token filter | Elasticsearch Guide [7.11] | Elastic

我這里只提幾個點。

PUT /test_index
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym": {
            "tokenizer": "whitespace",
            # 這里引用了同義詞的filter
            "filter": [ "synonym" ]
          }
        },
        "filter": {
          "synonym": {
            "type": "synonym",
            # 注意這里,analysis一個目錄,它是在es解壓后的config下的目錄。synonym.txt 是同義詞庫。具體文件,下邊會給。
            "synonyms_path": "analysis/synonym.txt",
            # 這個參數(shù),可以忽略同義詞庫中分詞有問題的錯誤行。
             "lenient": true,
            # 這個參數(shù)很重要,只有開其他,才能實現(xiàn)同義詞庫的熱更新。
            "updateable": true
          }
        }
      }
    }
  }
}
  1. 同義詞庫

https://github.com/zhoushineyoung/search-prod/blob/63dba77eaa98a81e29b9ac8e9179ac5b93538da3/solr-cloud/solr-4.7.0/solr/sentiment/conf/synonyms.txt#L1981

這里分享了一個同一個以詞庫。請注意詞庫的內(nèi)容。根據(jù)上述如何修改詞庫,自行決定。我是把同義詞用逗號分隔的。我把這個文件中的 => 替換成了逗號。

  1. 如何動態(tài)更新
POST article_info_test_1109_2/reload_search_analyzers
# 執(zhí)行結(jié)果
{
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "failed" : 0
  },
  "reload_details" : [
    {
      "index" : "article_info_test_1109_2",
      # 這里可以看到有刷新的分詞器。
      "reloaded_analyzers" : [
        "synonym_analyzer"
      ],
      "reloaded_node_ids" : [
        "jiIC9zJyTES_dMIw0w6n8A",
        "dMKuVhnvQySXkO7AfZCXrA",
        "_6o86PMrRlegvJfB_G8bTw"
      ]
    }
  ]
}

三、同義詞官方博文

借助同義詞讓 Elasticsearch 更加強(qiáng)大 | Elastic Blog文章來源地址http://www.zghlxwxcb.cn/news/detail-785727.html

到了這里,關(guān)于Elasticsearch同義詞最佳實踐的文章就介紹完了。如果您還想了解更多內(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • elasticsearch 同義詞管理熱更新

    elasticsearch 同義詞管理熱更新

    項目有需要做一個同義詞搜索的功能,就去研究了下es的同義詞搜索功能,踩了不少坑記錄下 如果只是需要同義詞搜索,不需要管理和更新,es本體就能支持,我踩的坑基本也不在這,就不具體說了,參考這個就好了https://blog.csdn.net/qq_40592041/article/details/108006994 插件倉庫地址

    2024年02月19日
    瀏覽(21)
  • Elasticsearch:如何在 Elasticsearch 中正確使用同義詞功能

    Elasticsearch:如何在 Elasticsearch 中正確使用同義詞功能

    同義詞用于提高搜索質(zhì)量并擴(kuò)大匹配范圍。 例如,搜索 England 的用戶可能希望找到包含 British 或 UK 的文檔,盡管這三個詞完全不同。 Elasticsearch 中的同義詞功能非常強(qiáng)大,如果實施得當(dāng),可以使你的搜索引擎更加健壯和強(qiáng)大。 在本文中,我們將通過簡單的代碼片段介紹在實

    2024年02月13日
    瀏覽(24)
  • Elasticsearch:詞干、Shingles 和同義詞過濾器

    分詞器生成的分詞可能需要進(jìn)一步豐富或增強(qiáng),例如小寫(或大寫)標(biāo)記、提供同義詞、開發(fā)詞干詞、刪除撇號或標(biāo)點符號等。 分詞過濾器對分詞進(jìn)行處理以執(zhí)行此類轉(zhuǎn)換。 Elasticsearch 提供了將近 50 個分詞過濾器,正如你可以想象的那樣,在這里討論所有這些過濾器是不可

    2024年02月03日
    瀏覽(26)
  • docker-compose安裝es以及ik分詞同義詞插件

    docker-compose安裝es以及ik分詞同義詞插件

    目錄 1 前言 2 集成利器Docker 2.1 Docker環(huán)境安裝 2.1.1 環(huán)境檢查 2.1.2 在線安裝 2.1.3 離線安裝 2.2 Docker-Compose的安裝 2.2.1 概念簡介 2.2.2 安裝步驟 2.2.2.1 二進(jìn)制文件安裝 2.2.2.2 離線安裝 2.2.2.3 yum安裝 3 一鍵安裝ES及Kibana 3.1 yml文件的編寫 3.1.1 elasticsearch.yml配置 3.1.2 kibana.yml配置 3.2 一鍵

    2024年04月23日
    瀏覽(24)
  • 使用阿里云試用Elasticsearch學(xué)習(xí):3.6 處理人類語言——同義詞

    詞干提取是通過簡化他們的詞根形式來擴(kuò)大搜索的范圍,同義詞 通過相關(guān)的觀念和概念來擴(kuò)大搜索范圍。 也許沒有文檔匹配查詢 “英國女王“ ,但是包含 “英國君主” 的文檔可能會被認(rèn)為是很好的匹配。 用戶搜索 “美國” 并且期望找到包含 美利堅合眾國 、 美國 、 美

    2024年04月10日
    瀏覽(19)
  • Elasticsearch教程(35) ik中文分詞器+pinyin拼音分詞器+同義詞

    Elasticsearch教程(35) ik中文分詞器+pinyin拼音分詞器+同義詞

    閑來無事,發(fā)現(xiàn)上一篇ES博客還是 去年9月份 寫的中文ik分詞器 pinyin 首字母 search_as_you_type 組合使用,該篇文章還挖了一個 大坑 沒有填,快一年了,是時候填下坑了。 針對股票查詢這個特點場景,再結(jié)合一般使用者的搜索習(xí)慣,暫時確定如下7種期望效果。 上一篇博客Elast

    2023年04月09日
    瀏覽(30)
  • 同義詞替換-批量自動同義詞替換軟件

    同義詞替換-批量自動同義詞替換軟件

    同義詞替換,今天給大家分享一款免費的同義詞替換器,支持各種同義詞替換。一個同義詞可以替換多種同義詞。同時還支持同義詞文章替換詳細(xì)參考圖片 如何優(yōu)化網(wǎng)站是每個專業(yè)SEO人員都熟悉的問題,也是每天必須做的功課之一。接下來,我們來談?wù)劸W(wǎng)站中的高索引

    2024年02月09日
    瀏覽(15)
  • Oracle系列十二:視圖、記錄、同義詞、序列

    (1)基本概念 Oracle視圖是數(shù)據(jù)庫中的一種特殊對象,它是一個虛擬的表,不存儲數(shù)據(jù),而是基于一個或多個表的查詢結(jié)果而創(chuàng)建的。視圖可以看作是一個 存儲在數(shù)據(jù)庫中的查詢結(jié)果集 ,具有表的特性,包含一系列帶有名稱的列和行數(shù)據(jù), 可以被查詢、修改和刪除 等。 視圖

    2024年02月03日
    瀏覽(24)
  • Oracle存過-對象權(quán)限創(chuàng)建回收、同義詞創(chuàng)建刪除

    Oracle存過-對象權(quán)限創(chuàng)建回收、同義詞創(chuàng)建刪除

    2024年02月15日
    瀏覽(28)
  • ES搜索引擎入門+最佳實踐(九):項目實戰(zhàn)(二)--elasticsearch java api 進(jìn)行數(shù)據(jù)增刪改查

    ? ? ? ? 本篇是這個系列的最后一篇了,在這之前可以先看看前面的內(nèi)容: ES搜索引擎入門+最佳實踐(一)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實踐(二)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實踐(三)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實踐(四)_flame.liu的博客

    2024年02月12日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包