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

Elasticsearch 全文檢索 分詞檢索-Elasticsearch文章四

這篇具有很好參考價(jià)值的文章主要介紹了Elasticsearch 全文檢索 分詞檢索-Elasticsearch文章四。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

官方文檔地址

https://www.elastic.co/guide/en/enterprise-search/current/start.html

refercence文檔

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/query-dsl-match-query.html

全文搜索體系

Full text Query中,我們只需要把如下的那么多點(diǎn)分為3大類,你的體系能力會(huì)大大提升

Elasticsearch 全文檢索 分詞檢索-Elasticsearch文章四,AI大數(shù)據(jù),分布式微服務(wù),全文檢索,elasticsearch,分詞

很多api都可以查得到,我們只要大概知道有支持哪些功能

Elasticsearch 全文檢索 分詞檢索-Elasticsearch文章四,AI大數(shù)據(jù),分布式微服務(wù),全文檢索,elasticsearch,分詞

match

簡(jiǎn)單查詢

GET visit_log/_search
{
  "query": { "match": {
    "serverHostName": "wei"
  }},
  "sort": [
    { "_id": "asc" }
  ],
  "from": 0,
  "size": 10
}

Elasticsearch 執(zhí)行上面這個(gè) match 查詢的步驟是:
1. 檢查字段類型 。
標(biāo)題 title 字段是一個(gè) string 類型( analyzed )已分析的全文字段,這意味著查詢字符串本身也應(yīng)該被分析。
1. 分析查詢字符串 。
將查詢的字符串 wei cui傳入標(biāo)準(zhǔn)分析器中,輸出的結(jié)果是單個(gè)項(xiàng) wei。因?yàn)橹挥幸粋€(gè)單詞項(xiàng),所以 match 查詢執(zhí)行的是單個(gè)底層 term 查詢。
1. 查找匹配文檔 。
用 term 查詢?cè)诘古潘饕胁檎?wei然后獲取一組包含該項(xiàng)的文檔,本例的結(jié)果是文檔:1、2 和 3 。
1. 為每個(gè)文檔評(píng)分 。
用 term 查詢計(jì)算每個(gè)文檔相關(guān)度評(píng)分 _score ,這是種將詞頻(term frequency,即詞 quick 在相關(guān)文檔的 title 字段中出現(xiàn)的頻率)和反向文檔頻率(inverse document frequency,即詞 quick 在所有文檔的 title 字段中出現(xiàn)的頻率),以及字段的長(zhǎng)度(即字段越短相關(guān)度越高)相結(jié)合的計(jì)算方式。

查詢結(jié)果:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : "visit_log",
        "_type" : "_doc",
        "_id" : "nUL9rokBpGsmR0pP0VSc",
        "_score" : null,
        "_source" : {
          "_class" : "org.lwd.microservice.boot.es.entity.VisitLog",
          "id" : 7,
          "tableName" : "VisitLog",
          "userLoginId" : 3,
          "serverIpAddress" : "127.0.0.1",
          "serverHostName" : "liu wei",
          "initialRequest" : "http://localhost:8023",
          "msgContent" : "test es add7",
          "createTime" : 1690446876000
        },
        "sort" : [
          "nUL9rokBpGsmR0pP0VSc"
        ]
      }
    ]
  }
}

match 多詞/分詞

單字段分詞

查詢字段包含wei cui兩個(gè)詞

GET visit_log/_search
{
  "query": { "match": {
    "serverHostName": "wei cui"
  }},
  "sort": [
    { "_id": "asc" }
  ],
  "from": 0,
  "size": 10
}


結(jié)果:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : "visit_log",
        "_type" : "_doc",
        "_id" : "TEL9rokBpGsmR0pPXFMo",
        "_score" : null,
        "_source" : {
          "_class" : "org.lwd.microservice.boot.es.entity.VisitLog",
          "id" : 5,
          "tableName" : "VisitLog",
          "userLoginId" : 3,
          "serverIpAddress" : "127.0.0.1",
          "serverHostName" : "wang cui",
          "initialRequest" : "http://localhost:8023",
          "msgContent" : "test es add6",
          "createTime" : 1690446876000
        },
        "sort" : [
          "TEL9rokBpGsmR0pPXFMo"
        ]
      },
      {
        "_index" : "visit_log",
        "_type" : "_doc",
        "_id" : "nUL9rokBpGsmR0pP0VSc",
        "_score" : null,
        "_source" : {
          "_class" : "org.lwd.microservice.boot.es.entity.VisitLog",
          "id" : 7,
          "tableName" : "VisitLog",
          "userLoginId" : 3,
          "serverIpAddress" : "127.0.0.1",
          "serverHostName" : "liu wei",
          "initialRequest" : "http://localhost:8023",
          "msgContent" : "test es add7",
          "createTime" : 1690446876000
        },
        "sort" : [
          "nUL9rokBpGsmR0pP0VSc"
        ]
      }
    ]
  }
}

因?yàn)?match 查詢必須查找兩個(gè)詞( [“l(fā)iu”,“wei”] ),它在內(nèi)部實(shí)際上先執(zhí)行兩次 term 查詢,然后將兩次查詢的結(jié)果合并作為最終結(jié)果輸出。為了做到這點(diǎn),它將兩個(gè) term 查詢包入一個(gè) bool 查詢中,
所以上述查詢的結(jié)果,和如下語(yǔ)句查詢結(jié)果是等同的

GET /visit_log/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "serverHostName": "liu"
          }
        },
        {
          "term": {
            "serverHostName": "cui"
          }
        }
      ]
    }
  }
}

match多個(gè)詞的邏輯

上面等同于should(任意一個(gè)滿足),是因?yàn)?match還有一個(gè)operator參數(shù),默認(rèn)是or, 所以對(duì)應(yīng)的是should。

GET /visit_log/_search
{
  "query": {
    "match": {
      "serverHostName": {
        "query": "wang cui",
        "operator": "or"
      }
    }
  }
}

多字段分詞

GET /visit_log/_search
{
  "query": {
    "bool": {
      "should": [
        { "match": { "serverHostName": "cui wei" }},
        { "match": { "msgContent": "add3 add4" }}
      ]
    }
  }
}

控制match的匹配精度

如果用戶給定 3 個(gè)查詢?cè)~,想查找至少包含其中 2 個(gè)的文檔,該如何處理?將 operator 操作符參數(shù)設(shè)置成 and 或者 or 都是不合適的。
match 查詢支持 minimum_should_match 最小匹配參數(shù),這讓我們可以指定必須匹配的詞項(xiàng)數(shù)用來(lái)表示一個(gè)文檔是否相關(guān)。我們可以將其設(shè)置為某個(gè)具體數(shù)字,更常用的做法是將其設(shè)置為一個(gè)百分?jǐn)?shù),因?yàn)槲覀儫o(wú)法控制用戶搜索時(shí)輸入的單詞數(shù)量:

GET /visit_log/_search
{
  "query": {
    "match": {
      "serverHostName": {
        "query": "wang cui wangcui",
        "minimum_should_match": "75%"
      }
    }
  }
}

當(dāng)然也等同于

GET /visit_log/_search
{
  "query": {
    "bool": {
      "should": [
        { "match": { "serverHostName": "wang" }},
        { "match": { "serverHostName": "cui"   }},
        { "match": { "serverHostName": "wangcui"   }}
      ],
      "minimum_should_match": 2 
    }
  }
}

match_pharse_prefix分詞前綴方式

那有沒有可以查詢出quick brown f的方式呢?ELasticSearch在match_phrase基礎(chǔ)上提供了一種可以查最后一個(gè)詞項(xiàng)是前綴的方法,這樣就可以查詢test es a了

GET /visit_log/_search
{
  "query": {
    "match_phrase_prefix": {
      "msgContent": {
        "query": "test es a"
      }
    }
  }
}


(ps: prefix的意思不是整個(gè)text的開始匹配,而是最后一個(gè)詞項(xiàng)滿足term的prefix查詢而已)

match_bool_prefix

GET /visit_log/_search
{
  "query": {
    "match_bool_prefix": {
      "msgContent": {
        "query": "es test a"
      }
    }
  }
}

所以這樣你就能理解,match_bool_prefix查詢中的quick,brown,f是無(wú)序的。

multi_match多字段匹配

GET /visit_log/_search
{
  "query": {
    "multi_match" : {
      "query":    "add7 wang",
      "fields": [ "msgContent", "*HostName" ] 
    }
  }
}

結(jié)果:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : 1.7917595,
    "hits" : [
      {
        "_index" : "visit_log",
        "_type" : "_doc",
        "_id" : "nUL9rokBpGsmR0pP0VSc",
        "_score" : 1.7917595,
        "_source" : {
          "_class" : "org.lwd.microservice.boot.es.entity.VisitLog",
          "id" : 7,
          "tableName" : "VisitLog",
          "userLoginId" : 3,
          "serverIpAddress" : "127.0.0.1",
          "serverHostName" : "liu wei",
          "initialRequest" : "http://localhost:8023",
          "msgContent" : "test es add7",
          "createTime" : 1690446876000
        }
      },
      {
        "_index" : "visit_log",
        "_type" : "_doc",
        "_id" : "TEL9rokBpGsmR0pPXFMo",
        "_score" : 1.0800905,
        "_source" : {
          "_class" : "org.lwd.microservice.boot.es.entity.VisitLog",
          "id" : 5,
          "tableName" : "VisitLog",
          "userLoginId" : 3,
          "serverIpAddress" : "127.0.0.1",
          "serverHostName" : "wang cui",
          "initialRequest" : "http://localhost:8023",
          "msgContent" : "test es add6",
          "createTime" : 1690446876000
        }
      },
      {
        "_index" : "visit_log",
        "_type" : "_doc",
        "_id" : "6UL9rokBpGsmR0pPjVOS",
        "_score" : 1.0800905,
        "_source" : {
          "_class" : "org.lwd.microservice.boot.es.entity.VisitLog",
          "id" : 6,
          "tableName" : "VisitLog",
          "userLoginId" : 3,
          "serverIpAddress" : "127.0.0.1",
          "serverHostName" : "wang ting",
          "initialRequest" : "http://localhost:8023",
          "msgContent" : "test es add6",
          "createTime" : 1690446876000
        }
      }
    ]
  }
}

*表示前綴匹配字段。

query string類型

此查詢使用語(yǔ)法根據(jù)運(yùn)算符(例如AND或)來(lái)解析和拆分提供的查詢字符串NOT。然后查詢?cè)诜祷仄ヅ涞奈臋n之前獨(dú)立分析每個(gè)拆分的文本。
可以使用該query_string查詢創(chuàng)建一個(gè)復(fù)雜的搜索,其中包括通配符,跨多個(gè)字段的搜索等等。盡管用途廣泛,但查詢是嚴(yán)格的,如果查詢字符串包含任何無(wú)效語(yǔ)法,則返回錯(cuò)誤。
例如:


GET /visit_log/_search
{
  "query": {
    "query_string": {
      "query": "(wangcui) OR (add6)",
      "fields": [ "msgContent", "*HostName" ] 
    }
  }
}

Interval類型

Intervals是時(shí)間間隔的意思,本質(zhì)上將多個(gè)規(guī)則按照順序匹配。


GET /visit_log/_search
{
  "query": {
    "intervals" : {
      "msgContent" : {
        "all_of" : {
          "ordered" : true,
          "intervals" : [
            {
              "match" : {
                "query" : "liu",
                "max_gaps" : 0,
                "ordered" : true
              }
            },
            {
              "any_of" : {
                "intervals" : [
                  { "match" : { "query" : "es" } },
                  { "match" : { "query" : "add6" } }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

因?yàn)閕nterval之間是可以組合的,所以它可以表現(xiàn)的很復(fù)雜

DSL查詢之Term詳解

自行查官方文檔,有可能后邊會(huì)出詳解文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-628732.html

聚合查詢之Bucket聚合詳解

自行查官方文檔,有可能后邊會(huì)出詳解

聚合查詢之Metric聚合詳解

自行查官方文檔,有可能后邊會(huì)出詳解

聚合查詢之Pipline聚合詳解

自行查官方文檔,有可能后邊會(huì)出詳解

其他

外傳

?? 原創(chuàng)不易,如若本文能夠幫助到您的同學(xué)
?? 支持我:關(guān)注我+點(diǎn)贊??+收藏??
?? 留言:探討問題,看到立馬回復(fù)
?? 格言:己所不欲勿施于人 揚(yáng)帆起航、游歷人生、永不言棄!??

到了這里,關(guān)于Elasticsearch 全文檢索 分詞檢索-Elasticsearch文章四的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【迅搜03】全文檢索、文檔、倒排索引與分詞

    【迅搜03】全文檢索、文檔、倒排索引與分詞

    今天還是概念性的內(nèi)容,但是這些概念卻是整個(gè)搜索引擎中最重要的概念??梢哉f,所有的搜索引擎就是實(shí)現(xiàn)了類似的概念才能稱之為搜索引擎。而且今天的內(nèi)容其實(shí)都是相關(guān)聯(lián)的,所以不要以為標(biāo)題上有四個(gè)名詞就感覺好像內(nèi)容很多一樣,其實(shí)它們都是聯(lián)系緊密的,一環(huán)套

    2024年02月03日
    瀏覽(22)
  • docker安裝的mysql更改全文檢索分詞配置

    docker安裝的mysql更改全文檢索分詞配置

    這里使用的是mysql8.0+,默認(rèn)使用ngram分詞 這里是已經(jīng)將文件從容器中掛載出來(lái)了,沒掛載出來(lái)要去容器內(nèi)部更改my.cnf文件并重啟mysql容器 一、查看mysql的分詞大小 ngram_token_size這里默認(rèn)是2我已經(jīng)改為1了 這個(gè)值代表分詞大小 比如abc會(huì)分成ab和bc兩個(gè)詞,會(huì)導(dǎo)致檢索單個(gè)詞a、b、

    2024年02月16日
    瀏覽(24)
  • MySQL全文索引:中文語(yǔ)義分詞檢索(相似度匹配)

    MySQL全文索引:中文語(yǔ)義分詞檢索(相似度匹配)

    前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。 通常情況下,全文檢索引擎我們一般會(huì)用ES組件(傳送門:SpringBoot系列——ElasticSearch),但不是所有業(yè)務(wù)都有那么大的數(shù)據(jù)量、那么大的并發(fā)要求,MySQL5.7之后內(nèi)置

    2023年04月09日
    瀏覽(23)
  • 全文檢索-Elasticsearch-進(jìn)階檢索

    全文檢索-Elasticsearch-進(jìn)階檢索

    本文記錄谷粒商城高級(jí)篇的 Elasticsearch 進(jìn)階檢索部分,續(xù)上之前記錄的 Elasticsearch入門篇。 ES 支持兩種基本方式檢索 : 一個(gè)是通過使用 REST request URI 發(fā)送搜索參數(shù)(uri + 檢索參數(shù)) 另一個(gè)是通過使用 REST request body 來(lái)發(fā)送它們(uri + 請(qǐng)求體) 請(qǐng)求體中寫查詢條件,語(yǔ)法: 示例

    2024年02月03日
    瀏覽(27)
  • 一個(gè)線上全文索引BUG的排查:關(guān)于類阿拉件數(shù)字的分詞與檢索

    一個(gè)線上全文索引BUG的排查:關(guān)于類阿拉件數(shù)字的分詞與檢索

    說到全文檢索的分詞,多半講到的是中(日韓)文分詞,少有英文等拉丁文系語(yǔ)言,因?yàn)橛⒄Z(yǔ)單詞天然就是分詞的。 但更少講到阿拉伯?dāng)?shù)字。比如金額,手機(jī)號(hào)碼,座機(jī)號(hào)碼等等。 以下不是傳統(tǒng)的從0開始針對(duì)mysql全文索引前世今生講起。 我更喜歡從一個(gè)小問題入手,見縫插針

    2024年02月05日
    瀏覽(29)
  • elasticsearch全文檢索

    傳送門 best_fields 傳送門 most_fields 當(dāng)查詢多字段包含相同文本以不同方式分詞的時(shí)候此參數(shù)最有用, 傳送門 cross_fields phrase和phrase_prefix 傳送門 傳送門

    2024年02月07日
    瀏覽(32)
  • ElasticSearch-全文檢索

    ElasticSearch-全文檢索

    https://www.elastic.co/cn/what-is/elasticsearch 全文搜索屬于最常見的需求,開源的Elasticsearch是目前全文搜索引擎的首選。 它可以快速地儲(chǔ)存、搜索和分析海量數(shù)據(jù)。 維基百科、StackOverflow、Github都采用它。 Elastic的底層是開源庫(kù)Lucene。但是,你沒法直接用Lucene,必須自己寫代碼去調(diào)用

    2024年04月17日
    瀏覽(25)
  • ElasticSearch 實(shí)戰(zhàn):ElasticSearch文檔全文檢索

    Elasticsearch 實(shí)戰(zhàn):Elasticsearch 文檔全文檢索 全文檢索是 Elasticsearch 的核心功能之一,它允許用戶對(duì)文本內(nèi)容進(jìn)行高效的模糊搜索、詞組匹配、同義詞處理、停用詞過濾等操作。以下是如何進(jìn)行文檔全文檢索的詳細(xì)步驟: **1. **全文匹配查詢(Match Query) 最基礎(chǔ)的全文檢索查詢是

    2024年04月11日
    瀏覽(28)
  • ES(Elasticsearch 全文檢索)

    ES(Elasticsearch 全文檢索)

    數(shù)據(jù)量大的時(shí)候 索引失效 =查詢性能低 功能比較弱 對(duì)文檔的內(nèi)容進(jìn)行分詞,對(duì)詞條創(chuàng)建索引,記錄詞條所在的文檔信息根據(jù)詞條查詢到文檔的id 從而查到文檔 文檔:每一條數(shù)據(jù)就是一條文檔 詞條:文檔按照語(yǔ)義分成的詞語(yǔ) 正向索引 根據(jù)文檔的id創(chuàng)建索引 查詢?cè)~條必須先找

    2024年02月05日
    瀏覽(52)
  • 全文檢索-Elasticsearch-整合SpringBoot

    全文檢索-Elasticsearch-整合SpringBoot

    前面記錄了 Elasticsearch 全文檢索的入門篇和進(jìn)階檢索。這次我們來(lái)講下 Spring Boot 中如何整合 ES,以及如何在 Spring Cloud 微服務(wù)項(xiàng)目中使用 ES 來(lái)實(shí)現(xiàn)全文檢索,來(lái)達(dá)到商品檢索的功能。 檢索服務(wù)單獨(dú)作為一個(gè)服務(wù),就稱作 gulimall-search 模塊。 點(diǎn)擊 Next 勾選 Spring Web 依賴,點(diǎn)擊

    2024年02月08日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包