多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > [Elasticsearch] 全文搜索 (三) - match查詢和bool查詢的關系,提升查詢子句

[Elasticsearch] 全文搜索 (三) - match查詢和bool查詢的關系,提升查詢子句

來源:程序員人生   發布時間:2015-01-04 09:52:14 閱讀次數:7725次

match查詢是如何使用bool查詢的

現在,你或許意想到了使用了match查詢的多詞查詢只是簡單地將生成的term查詢包括在了1個bool查詢中。通過默許的or操作符,每一個term查詢都以1個語句被添加,所以致少1個should語句需要被匹配。以下兩個查詢是等價的:

{ "match": { "title": "brown fox"} } { "bool": { "should": [ { "term": { "title": "brown" }}, { "term": { "title": "fox" }} ] } }

使用and操作符時,所有的term查詢都以must語句被添加,因此所有的查詢都需要匹配。以下兩個查詢是等價的:

{ "match": { "title": { "query": "brown fox", "operator": "and" } } } { "bool": { "must": [ { "term": { "title": "brown" }}, { "term": { "title": "fox" }} ] } }

如果指定了minimum_should_match參數,它會直接被傳入到bool查詢中,因此下面兩個查詢是等價的:

{ "match": { "title": { "query": "quick brown fox", "minimum_should_match": "75%" } } } { "bool": { "should": [ { "term": { "title": "brown" }}, { "term": { "title": "fox" }}, { "term": { "title": "quick" }} ], "minimum_should_match": 2 } }

由于只有3個查詢語句,minimum_should_match的值75%會被向下舍入到2。即最少兩個should語句需要匹配。

固然,我們可以通過match查詢來編寫這類查詢,但是理解match查詢的內部工作原理能夠讓你根據需要來控制該進程。有些行動沒法通過1個match查詢完成,比如對部份查詢詞條給予更多的權重。在下1節中我們會看到1個例子。



提升查詢子句(Boosting Query Clause)

固然,bool查詢其實不是只能合并簡單的單詞(One-word)match查詢。它能夠合并任何其它的查詢,包括其它的bool查詢。它通常被用來通過合并數個單獨的查詢的分值來調優每份文檔的相干度_score。

假定我們需要搜索和"full-text search"相干的文檔,但是我們想要給予那些提到了"Elasticsearch"或"Lucene"的文檔更多權重。更多權重的意思是,對提到了"Elasticsearch"或"Lucene"的文檔,它們的相干度_score會更高,即它們會出現在結果列表的前面。

1個簡單的bool查詢能夠讓我們表達較為復雜的邏輯:

GET /_search { "query": { "bool": { "must": { "match": { "content": { "query": "full text search", "operator": "and" } } }, "should": [ { "match": { "content": "Elasticsearch" }}, { "match": { "content": "Lucene" }} ] } } }
  1. content字段必須含有fulltextsearch這3個詞條
  2. 如果content字段也含有了詞條ElasticsearchLucene,那末該文檔會有1個較高的_score

should查詢子句的匹配數量越多,那末文檔的相干度就越高。目前為止還不錯。

但是如果我們想給含有Lucene的文檔多1些權重,同時給含有Elasticsearch的文檔更多1些權重呢?

我們可以通過指定1個boost值來控制每一個查詢子句的相對權重,該值默許為1。1個大于1boost會增加該查詢子句的相對權重。因此我們可以將上述查詢重寫以下:

GET /_search { "query": { "bool": { "must": { "match": { "content": { "query": "full text search", "operator": "and" } } }, "should": [ { "match": { "content": { "query": "Elasticsearch", "boost": 3 } }}, { "match": { "content": { "query": "Lucene", "boost": 2 } }} ] } } }

NOTE

boost參數被用來增加1個子句的相對權重(當boost大于1時),或減小相對權重(當boost介于01時),但是增加或減小不是線性的。換言之,boost設為2其實不會讓終究的_score加倍。

相反,新的_score會在適用了boost后被歸1化(Normalized)。每種查詢都有自己的歸1化算法(Normalization Algorithm),算法的細節超越了本書的討論范圍。但是能夠說1個高的boost值會產生1個高的_score。

如果你在實現你自己的不基于TF/IDF的相干度分值模型并且你需要對提升進程具有更多的控制,你可使用function_score查詢,它不通過歸1化步驟對文檔的boost進行操作。

在下1章中,我們會介紹其它的用于合并查詢的方法,多字段查詢(Multifield Search)。但是,首先讓我們看看查詢的另外一個重要特定:文本分析(Text Analysis)。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 免费欧美日韩 | www.久久久| 国产尤物在线观看 | 国产视频一区在线观看 | 午夜dj影院在线观看免费视频中文 | 国内自拍网 | 99热久久久这里只有精品免费 | 日本在线不卡免费视频一区 | 免费尤物视频 | 亚洲综合春色另类久久 | 亚洲最色网站 | 亚洲第一福利视频 | 看亚洲人配人配人种jizz | 欧美人与动人物姣配xxxx | 一本色道久久爱88a 一本视频在线 | 国产成人高清 | 国产精品女人在线观看 | 欧美毛片网站 | 91免费福利视频 | 国产精品久久久久乳精品爆 | 欧美色交| 视频一区二区国产 | 一级特黄aa毛片免费观看 | 99爱视频99爱在线观看免费 | 日本爱爱网站 | 日本一区二区三 | 亚洲精品主播一区二区三区 | 天堂亚洲网 | 在线观看一区二区三区四区 | 婷婷在线免费视频 | 一区二区三区四区国产 | 日韩久久精品一区二区三区 | 高清一区二区三区四区五区 | 激情小说图片 | 亚洲国产精品综合久久一线 | 丁香激情五月 | 欧美午夜视频在线观看 | 五月丁色 | 91在线 一区 二区三区 | 国产一二三区在线 | 日本无卡αv免费视频 |